• Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法


    Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法

    首先,在Scene中重载下面两个函数

    1. virtual void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event);  
    2. virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);  

    第一个函数在按下时触发,第二个函数在松开是触发。


    然后再Scene init的时候写上

    1. setKeyboardEnabled(true);  

    或者是
    1. //注册捕捉监听  
    2. auto listenerkeyPad = EventListenerKeyboard::create();  
    3. listenerkeyPad->onKeyReleased = CC_CALLBACK_2(HelloWorld::onKeyReleased, this);  
    4. _eventDispatcher->addEventListenerWithSceneGraphPriority(listenerkeyPad, this);  

    当然你也可以同时写,这样就监听了两次,如果你需要的话。。。


    我要做的是在5秒内按两次返回键退出,所以我只需要重载onKeyReleased函数即可。下面是函数的具体实现

    1. void HelloWorld::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event)  
    2. {  
    3.     switch (keyCode)  
    4.     {  
    5.     case cocos2d::EventKeyboard::KeyCode::KEY_BACK:  
    6.         {  
    7.             if(m_IsNeedExit == false)  
    8.             {  
    9.                 m_IsNeedExit = true;  
    10.                 this->scheduleOnce(SEL_SCHEDULE(&HelloWorld::CloseExitSign),5.0f);  
    11.             }  
    12.             else  
    13.             {  
    14.                 menuCloseCallback(nullptr);  
    15.             }  
    16.         }  
    17.     default:  
    18.         break;  
    19.     }  
    20. }  
    21.   
    22. void HelloWorld::menuCloseCallback(Ref* pSender)  
    23. {  
    24. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)  
    25.     MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");  
    26.     return;  
    27. #endif  
    28.   
    29.     Director::getInstance()->end();  
    30.   
    31. #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)  
    32.     exit(0);  
    33. #endif  
    34. }  
    35.   
    36. //定时器回调 退出标志关闭  
    37. void HelloWorld::CloseExitSign(float dt)  
    38. {  
    39.     m_IsNeedExit = false;  
    40. }  


    m_IsNeedExit 是类HelloWorld的一个成员变量,在构造函数中会定义为false。


    需要注意的是,如果头文件中需要USING_NS_CC;

  • 相关阅读:
    网络编程基础
    面试题
    面试题合集
    异常
    三个重要的模块loggning,hashlib,configparse
    面向对象进阶
    单例模式
    反射
    封装
    开发规范
  • 原文地址:https://www.cnblogs.com/dudu580231/p/4560384.html
Copyright © 2020-2023  润新知