cocos3.3 响应Android的Menu键和Back键

两个方法可以实现:

方法1:

  在Layer的init()中:

auto listener = EventListenerKeyboard::create();
	//和回调函数绑定 
	listener->onKeyPressed = CC_CALLBACK_2(MainMenu::onKeyPressed, this);
	listener->onKeyReleased = CC_CALLBACK_2(MainMenu::onKeyReleased, this);
	//添加到事件分发器中 
	Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,this);

实现MainMenu::onKeyPressed和MainMenu::onKeyReleased方法:

void MainMenu::onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event)
{
	log("============== onKeyPressed, keyCode = %d ==============", keyCode);
	int tag = 123456;
	auto child = this->getChildByTag(tag);
	if (child)
	{
		child->removeFromParent();
		child = nullptr;
	}
	auto label = Label::createWithTTF(StringUtils::format("onKeyPressed, keyCode = %d", keyCode), "fonts/msyh.ttf", 50.0f);
	label->setPosition(Vec2(200,200));
	label->setColor(Color3B(255,0,0));
	label->setTag(tag);
	addChild(label);
	MessageBox(StringUtils::format("onKeyPressed, keyCode = %d", keyCode).c_str(), "KEY_CODE");

}
void MainMenu::onKeyReleased(EventKeyboard::KeyCode keyCode, Event * pEvent)
{

	log("============== onKeyReleased, keyCode = %d ==============", keyCode);
	int tag = 123456;
	auto child = this->getChildByTag(tag);
	if (child)
	{
		child->removeFromParent();
		child = nullptr;
	}
	auto label = Label::createWithTTF(StringUtils::format("onKeyReleased, keyCode = %d", keyCode), "fonts/msyh.ttf", 50.0f);
	label->setPosition(Vec2(200, 200));
	label->setColor(Color3B(255, 0, 0));
	label->setTag(tag);
	addChild(label);
	MessageBox(StringUtils::format("onKeyReleased, keyCode = %d", keyCode).c_str(), "KEY_CODE");
}
第一种方法完成!


方法2:

继承Layer.h,

class MainMenu : public Layer

, 实现它的两个方法

    virtual void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event);
    virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);
并在init()中调用: 
setKeyboardEnabled(bool value)
把setKeyboardEnabled(true)设为true
第二个方法完成!

实现过程发现有2点要注意的

1:

它在cocos2dx3.3是只响应 onKeyPressed方法,而并不响应onKeyReleased方法!!

2:

我用红米2A测试,发现menu键(任务键)不响应,把它改为“显示菜单”,就好了。

修改菜单--参考: 这里


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值