因为苹果手机只有一个home键,所以只要按下home键就可以直接把程序进入后台,但是安卓比苹果多了一个返回键和菜单键,所以对于跨平台的cocos2d-x来说还是需要注意的.
对于这个来说,其实只需要实现两个函数就可以了,一个实现的是响应返回键,一个实现的响应菜单键
因为一般创建的都是继承的CCLayer的,而大家点CCLayer进去看一下会发现是这样的
CCLayer还继承了CCKeypadDelegate,这个就是要响应的代理,当然如果你感兴趣再进去看看也无妨
所以只需要在当前层实现这两个方法都可以了
virtual void keyBackClicked();//响应返回键 virtual void keyMenuClicked();//响应菜单键
然后在初始化里面设置当前层的按键可操作
setKeypadEnabled(true);
这样他就会自动调用了
这里给一个test的程序
#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::CCLayer { public: virtual bool init(); static cocos2d::CCScene* scene(); CREATE_FUNC(HelloWorld); virtual void keyBackClicked();//响应返回键 virtual void keyMenuClicked();//响应菜单键 }; #endif // __HELLOWORLD_SCENE_H__
然后就是cpp里面,在实现方法里面设置你想调用的方法就行了,因为只是测试,我是设置了一个label,这样在点击菜单和返回键时,label的值会变,这样看的更清楚
#include "HelloWorldScene.h" USING_NS_CC; CCScene* HelloWorld::scene() { CCScene *scene = CCScene::create(); HelloWorld *layer = HelloWorld::create(); scene->addChild(layer); return scene; } bool HelloWorld::init() { if ( !CCLayer::init() ) { return false; } setKeypadEnabled(true); //测试使用 CCLabelTTF*label=CCLabelTTF::create("ss", "", 20); label->setPosition(ccp(100, 200)); label->setTag(1); addChild(label); return true; } void HelloWorld::keyBackClicked() { ((CCLabelTTF*)this->getChildByTag(1))->setString("keyBackClicked"); } void HelloWorld::keyMenuClicked() { ((CCLabelTTF*)this->getChildByTag(1))->setString("keyMenuClicked"); }
其他就没什么了,只是这两个方法而已,然后打包给安卓机就可以测试了
版权属于:东哥笔记 - DongGe.me
本文链接:https://dongge.org/blog/6.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!