Cocos3.0 的android返回键功能实现

例如:Game.h   Game.cpp

头文件Game.h中定义:

void onKeyReleased(EventKeyboard::KeyCode keyCode,Event * pEvent);


Game.cpp文件中实现:

auto listener = EventListenerKeyboard::create(); //和回调函数绑定 

listener->onKeyReleased = CC_CALLBACK_2(Game::onKeyReleased,this); //添加到事件分发器中 

Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,this); 

//返回键退出

void Game::onKeyReleased(EventKeyboard::KeyCode keyCode,Event * pEvent) 
      { 
          Director::getInstance()->end(); 
      } 

//注意,此方法只支持Android平台下,在windows平台下编译会出现错误,建议用windows平台编译的时候把此方法注销掉。

//上述方法只点击一次返回键既可以退出,如果需要2次退出,可以采用下面这个方法:

void Game::onKeyReleased(EventKeyboard::KeyCode keyCode,Event * pEvent) 
{ 
<span style="white-space:pre">	</span>//把keycode的枚举值转换成int 手机的返回键键值为6
<span style="white-space:pre">	</span>auto x = (int)_keyCode;
<span style="white-space:pre">	</span>//如果点击返回键一次
<span style="white-space:pre">	</span>if (x == 6)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">	</span>//记录点击次数的变量,在头文件内声明并赋值0
<span style="white-space:pre">	</span>keydown++;
<span style="white-space:pre">	</span>//如果点击两次则退出游戏
<span style="white-space:pre">	</span>if (keydown == 2)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">	</span>Director::getInstance()->end();
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>//否则就显示文字,“再按一次退出”
<span style="white-space:pre">	</span>else
<span style="white-space:pre">	</span>{
<span style="white-space:pre">	</span>//增加的一个精灵图片,就是显示的“再按一次退出游戏”
<span style="white-space:pre">	</span>auto label1 = Sprite::create("again.png");
<span style="white-space:pre">	</span>addChild(label1);
<span style="white-space:pre">	</span>//在给文字加一个消失动画和一个回调函数
<span style="white-space:pre">	</span>//动画消失以后回调函数删除该Node,并把keydown赋值0
<span style="white-space:pre">	</span>//如果动画没有消失而又点击了返回键则直接退出游戏
<span style="white-space:pre">	</span>//两次点击返回键的时间间隔为0.1+1.5=1.6,这个时间可以自己设置
<span style="white-space:pre">	</span>auto fadeout = FadeOut::create(0.1f);
<span style="white-space:pre">	</span>label1->runAction(Sequence::create(DelayTime::create(1.5f),fadeout, CallFunc::create(CC_CALLBACK_0(againExit::oncallback, this, label1)), NULL));
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>}
}


  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值