第六节:事件处理

第六节:事件处理,第1张

概述单点触屏事件: //先创建一个单点触屏监听器 auto listener = EventListenerTouchOneByOne::create(); //注册监听器的回调方法,分别回调本节点的三个方法 listener->onTouchBegan = CC_CALLBACK_2(EventScene::onTouchBegan, this); liste 单点触屏事件:
    //先创建一个单点触屏监听器    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;}
总结

以上是内存溢出为你收集整理的第六节:事件处理全部内容,希望文章能够帮你解决第六节:事件处理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1060963.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存