我们常见的安卓项目都有再按一次退出程序的提示,在cocos2dx中如何实现?
编译环境cocos2dx 3.3
vs2013
先上代码
//创建一个监听按键的函数
auto listener = EventListenerKeyboard::create();
//设置函数的onKeyReleased实现
listener->onKeyReleased = [=](EventKeyboard::KeyCode _keyCode, Event * pEvent)
{
//把keycode的枚举值转换成int 手机的返回键键值为6
auto x = (int)_keyCode;
//这里是测试键值的代码,大家可以忽略
char a[10] = { 0 };
sprintf(a, "%d", x);
label->setString(a);
//如果点击返回键一次
if (x==6)
{
//记录点击次数的变量,在头文件内声明并赋值0
keydown++;
//如果点击两次则退出游戏
if (keydown==2)
{
Director::getInstance()->end();
}
//否则就显示文字,“再按一次退出”
else
{
auto label1 = Label::createWithTTF("Try again!", "fonts/Marker Felt.ttf", 24);
label1->setPosition(Vec2(200,100));
this->addChild(label1, 2);
//在给文字加一个消失动画和一个回调函数
//动画消失以后回调函数删除该Node,并把keydown赋值0
//如果动画没有消失而又点击了返回键则直接退出游戏
auto fadeout = FadeOut::create(1.5);
label1->runAction(Sequence::create(fadeout, CallFunc::create(CC_CALLBACK_0(HelloWorld::aaaupdate, this,label1)), NULL));
}
}
};
//添加监听
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
下面是回调函数的实现:
//动画回调函数
void HelloWorld::aaaupdate(Label * l)
{
keydown = 0;
removeChild(l);
}
请看实例演示
最后附上下载链接!可以拿去直接放到class文件夹加入文件中
http://download.csdn.net/detail/babylang3/8404379