
//先创建一个单点触屏监听器 auto Listener = EventListenertouchOneByOne::create(); //注册监听器的回调方法,分别回调本节点的三个方法 Listener->ontouchBegan = CC_CALLBACK_2(EventScene::ontouchBegan,this); Listener->ontouchended = CC_CALLBACK_2(EventScene::ontouchended,this); Listener->ontouchmoved = CC_CALLBACK_2(EventScene::ontouchmoved,this); //注册监听器 _eventdispatcher->addEventListenerWithSceneGraPHPriority(Listener,this);
//手势开始的时候执行bool EventScene::ontouchBegan(cocos2d::touch *touch,cocos2d::Event *unused_event){ //获取屏幕触控点 auto p = touch->getLocationInVIEw(); //把点的转换为GL坐标 p = Director::getInstance()->convertToGL(p); //在控制台输出点的坐标 cclOG("[%f,%f]",p.x,p.y); //如果返回false,就不再往下执行,后面的ontouchmoved和ontouchended就不会再执行 return true;}//滑动手势的时候执行voID EventScene::ontouchmoved(cocos2d::touch *touch,cocos2d::Event *unused_event){ cclOG("执行移动 *** 作");}//手势结束的时候执行voID EventScene::ontouchended(cocos2d::touch *touch,cocos2d::Event *unused_event){ cclOG("手势结束了");} 多点触屏事件:
//注册监听器的回调方法,分别回调本节点的三个方法 //与单点触控是不一样的方法 auto all_Listener = EventListenertouchAllAtOnce::create(); all_Listener->ontouchesBegan = CC_CALLBACK_2(EventScene::ontouchesBegan,this); all_Listener->ontouchesMoved = CC_CALLBACK_2(EventScene::ontouchesMoved,this); all_Listener->ontouchesEnded = CC_CALLBACK_2(EventScene::ontouchesEnded,this); //注册监听器 _eventdispatcher->addEventListenerWithSceneGraPHPriority(all_Listener,this);
voID EventScene::ontouchesBegan(const std::vector<touch *> &touches,cocos2d::Event *unused_event){ //从触控的多点中,取出一个触控点 auto t = touches[0]; //获取屏幕触控点 auto p = t->getLocationInVIEw(); //把点的转换为GL坐标 p = Director::getInstance()->convertToGL(p); //在控制台输出点的坐标 cclOG("[%f,p.y);}voID EventScene::ontouchesMoved(const std::vector<touch *> &touches,cocos2d::Event *unused_event){ cclOG("多点触控执行移动 *** 作");}voID EventScene::ontouchesEnded(const std::vector<touch *> &touches,cocos2d::Event *unused_event){ cclOG("多点触控手势结束了");} 鼠标事件:
auto mouse_Listener = EventListenerMouse::create(); mouse_Listener->onmouseup = CC_CALLBACK_1(EventScene::onmouseup,this); mouse_Listener->onMouseDown = CC_CALLBACK_1(EventScene::onMouseDown,this); mouse_Listener->onMouseScroll = CC_CALLBACK_1(EventScene::onMouseScroll,this); mouse_Listener->onMouseMove = CC_CALLBACK_1(EventScene::onMouseMove,this); _eventdispatcher->addEventListenerWithSceneGraPHPriority(mouse_Listener,this);
voID EventScene::onMouseDown(cocos2d::Event *e){ EventMouse* em = (EventMouse*)e; int b = em->getMousebutton(); cclOG("你点击的是鼠标的%d",b);}voID EventScene::onMouseMove(cocos2d::Event *e){ EventMouse* em = (EventMouse*)e; cclOG("鼠标移动的坐标[%f,em->getCursorX(),em->getCursorY());}voID EventScene::onMouseScroll(cocos2d::Event *e){ EventMouse* em = (EventMouse*)e; cclOG("滑轮滚动的坐标[%f,em->getScrollX(),em->getScrollY());}voID EventScene::onmouseup(cocos2d::Event *e){ cclOG("鼠标抬起");} 键盘事件:
auto keyboard_Listener = EventListenerKeyboard::create(); keyboard_Listener->onkeyreleased = CC_CALLBACK_2(EventScene::onkeyreleased,this); keyboard_Listener->onKeypressed = CC_CALLBACK_2(EventScene::onKeypressed,this); _eventdispatcher->addEventListenerWithSceneGraPHPriority(keyboard_Listener,this);
voID EventScene::onKeypressed(EventKeyboard::KeyCode keyCode,cocos2d::Event *event){ switch (keyCode) { case cocos2d::EventKeyboard::KeyCode::KEY_UP_ARROW: cclOG("UP..."); break; case cocos2d::EventKeyboard::KeyCode::KEY_DOWN_ARROW: cclOG("DOWN..."); break; case cocos2d::EventKeyboard::KeyCode::KEY_RIGHT_ARROW: cclOG("RIGHT..."); break; case cocos2d::EventKeyboard::KeyCode::KEY_left_ARROW: cclOG("left..."); break; }}voID EventScene::onkeyreleased(EventKeyboard::KeyCode keyCode,cocos2d::Event *event){ }
//首先,要打开加速度传感器 Device::setAccelerometerEnabled(true); //创建一个加速度传感器监听器,参数是一个回调 auto acceler_Listener = EventListeneracceleration::create(CC_CALLBACK_2(EventScene::onacceleration,this)); //注册监听器 _eventdispatcher->addEventListenerWithSceneGraPHPriority(acceler_Listener,this);
voID EventScene::onacceleration(cocos2d::acceleration *acc,cocos2d::Event *unused_event){ //分别获取x,y,z方向上的加速度 float x = acc->x; float y = acc->y; float z = acc->z;} 总结 以上是内存溢出为你收集整理的第六节:事件处理全部内容,希望文章能够帮你解决第六节:事件处理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)