cocos2d-x3.0各种事件如何注册监听备忘
来源:互联网 发布:ubuntu怎么安装lamp 编辑:程序博客网 时间:2024/05/07 16:35
3.2改动不少,有很方便的物理引擎封装,下面代码为物理引擎注册碰撞监听的回调,注册触摸事件监听的回调,注册键盘事件的监听和回调。
void MainGame::onEnter(){Layer::onEnter();//添加碰撞 回调监听auto physicsListener = EventListenerPhysicsContact::create();physicsListener->onContactBegin = CC_CALLBACK_1(MainGame::onContactBegin,this);_eventDispatcher->addEventListenerWithSceneGraphPriority(physicsListener,this);//添加键盘事件监听EventListenerKeyboard* keyPadListener = EventListenerKeyboard::create();keyPadListener->onKeyPressed = CC_CALLBACK_2(MainGame::onKeyPressed,this);_eventDispatcher->addEventListenerWithSceneGraphPriority(keyPadListener,this);//添加触摸事件监听auto touchListener = EventListenerTouchOneByOne::create();touchListener->setSwallowTouches(true);touchListener->onTouchBegan = CC_CALLBACK_2(MainGame::onTouchBegan,this);_eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener,this);}
bool MainGame::onTouchBegan(Touch* pTouch,Event* pEvent){CCLOG("%s","onTouchesBegan");return true;}void MainGame::onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event){CCLOG("%s","onKeyPressed");//方向键if ( keyCode== EventKeyboard::KeyCode::KEY_DPAD_LEFT || keyCode== EventKeyboard::KeyCode::KEY_KP_LEFT || keyCode== EventKeyboard::KeyCode::KEY_LEFT_ARROW || keyCode == EventKeyboard::KeyCode::KEY_LEFT_BRACE|| keyCode == EventKeyboard::KeyCode::KEY_LEFT_BRACKET || keyCode == EventKeyboard::KeyCode::KEY_LEFT_PARENTHESIS ){CCLOG("LEFT");}elseif(keyCode== EventKeyboard::KeyCode::KEY_DPAD_RIGHT ||keyCode== EventKeyboard::KeyCode::KEY_KP_RIGHT ||keyCode== EventKeyboard::KeyCode::KEY_RIGHT_ARROW ||keyCode== EventKeyboard::KeyCode::KEY_RIGHT_BRACE ||keyCode== EventKeyboard::KeyCode::KEY_RIGHT_BRACKET ||keyCode== EventKeyboard::KeyCode::KEY_RIGHT_PARENTHESIS){CCLOG("RIGHT");}elseif( keyCode== EventKeyboard::KeyCode::KEY_DPAD_UP ||keyCode== EventKeyboard::KeyCode::KEY_KP_UP ||keyCode== EventKeyboard::KeyCode::KEY_UP_ARROW ||keyCode== EventKeyboard::KeyCode::KEY_KP_PG_UP ||keyCode== EventKeyboard::KeyCode::KEY_PG_UP ){CCLOG("UP");}elseif( keyCode== EventKeyboard::KeyCode::KEY_DPAD_DOWN ||keyCode== EventKeyboard::KeyCode::KEY_KP_DOWN ||keyCode== EventKeyboard::KeyCode::KEY_DOWN_ARROW ||keyCode== EventKeyboard::KeyCode::KEY_KP_PG_DOWN ||keyCode== EventKeyboard::KeyCode::KEY_PG_DOWN){CCLOG("DOWN");}else//确定if(keyCode== EventKeyboard::KeyCode::KEY_KP_ENTER ||keyCode== EventKeyboard::KeyCode::KEY_DPAD_CENTER ||keyCode== EventKeyboard::KeyCode::KEY_ENTER){CCLOG("ENTER");}else//返回if(keyCode== EventKeyboard::KeyCode::KEY_BACKSPACE ||keyCode== EventKeyboard::KeyCode::KEY_SPACE ||keyCode== EventKeyboard::KeyCode::KEY_ESCAPE){CCLOG("BACK");}else//菜单if( keyCode== EventKeyboard::KeyCode::KEY_MENU){CCLOG("MENU");}}
bool MainGame::onContactBegin(PhysicsContact& contact){auto spriteA = (Sprite*)contact.getShapeA()->getBody()->getNode(); <span style="white-space:pre"></span>auto spriteB = (Sprite*)contact.getShapeB()->getBody()->getNode();int tagA = spriteA->getTag();int tagB = spriteB->getTag();return true;}
还有关于 cocos2d-x 3.2 物理引擎的 物理刚体的碰撞标识有几个描述特别精髓
PhysicsBody* body = PhysicsBody::createBox(playerSize);body->getShape(0)->setRestitution(0.0f);//反弹力body->getShape(0)->setFriction(0.0f);//摩擦力body->getShape(0)->setDensity(0.1f);//密度 10000000body->setDynamic(false);body->setGravityEnable(false);body->setCategoryBitmask(0x01); // 0001 我是谁body->setContactTestBitmask(0x02); // 0100 我和谁碰撞触发回调body->setCollisionBitmask(0x02); // 0011 我实际和谁产生碰撞
补充一个和2.x版本差不多的添加触摸监听的方法
在init中调用如下函数进行设置
this->setTouchEnabled(true);this->setTouchMode(Touch::DispatchMode::ONE_BY_ONE);
0 0
- cocos2d-x3.0各种事件如何注册监听备忘
- cocos2d-x3.x 事件监听笔记
- Cocos2d-x3.X版本事件注册方法
- Cocos2d-x3.0 触摸事件
- cocos2d-x3.0事件处理机制
- cocos2d-x3.0的touch事件
- cocos2d-x3.0的touch事件
- cocos2d-x3.0的touch事件
- Cocos2d-x3.0 如何使用HttpClient
- Cocos2d-js创建构造注册事件监听回调函数
- Cocos2d-x3.1事件实例
- Cocos2d-x3.2 双击事件
- Cocos2d-x3.2 双击事件
- Cocos2d-x3.2 双击事件
- Cocos2d-x3.2 双击事件
- 枫叶天空Cocos2d-x3.0系列教程四 事件机制
- 事件分发机制-----------------------cocos2d-x3.0正式版本(7.20)
- cocos2d-x3.2 lua 返回键监听
- POJ1014 Dividing 母函数
- Ant的build.xml的编写学习
- Java Web学习之路
- 利用反射机制,通过资源名字得到资源的ID
- Sharepoint Performance Point 完全使用技巧二
- cocos2d-x3.0各种事件如何注册监听备忘
- 利用栈求解迷宫问题
- 前端基础培训
- 自适应含噪信号过零率算法
- .NET学习之路。
- 如何让javascrip标签script内输出的内容在浏览器中居中显示?
- javascript高级程序设计(第三版)---1
- 程序员一定要投资的那些事
- hdu 4763 扩展的KMP