【问题标题】:How to add touch event listener in Cocos2dx 3.1?如何在 Cocos2dx 3.1 中添加触摸事件监听器?
【发布时间】:2014-07-12 05:14:18
【问题描述】:

我使用以下代码在 cocos2dx 中为按钮添加监听方法:

button->addTouchEventListener(this, toucheventselector(HomeScene::doSomething));

但是从 Cocos2dx 3.1 开始,toucheventselector 和 addTouchEventListener 都被贬低了。有:

void addTouchEventListener(ccWidgetTouchCallback callback);

我无法让它工作 - 我尝试了我能找到的每个宏 - callfuncO_selector、CC_CALLBACK 等。我只是不知道如何指向我的方法,看起来像这样:

void HomeScene::doSomething(Ref *pSender, Widget::TouchEventType type);

未能从 Google、论坛、git、更改日志、测试中找到任何线索...

【问题讨论】:

    标签: cocos2d-x cocos2d-x-3.0


    【解决方案1】:

    好吧,我通常将我的按钮子类化并为其添加侦听器。示例:http://cocos2d-x.org/wiki/How_To_Subclass_Sprite_And_Add_Event_Listeners

    【讨论】:

      【解决方案2】:

      您应该使用 CC_CALLBACK_2 宏。

      【讨论】:

      • @filip 请在这里写下更多细节。我有同样的问题,不知道如何解决。我想我应该使用Widget::ccWidgetTouchCallback?
      • 按照 Lazar 的建议,您应该使用 CC_CALLBACK_2 宏而不是 ccWidgetTouchCallback,因为 Cocos2dx 3.1 AFIK 中还没有这样的东西。
      • @filip 感谢您的回答。你知道是否可以设置为监听器而不是类方法,而是一个 lambda 函数?
      • @Narek - 是的,您可以使用 lambdas 作为回调:EventListener* listener = EventListenerCustom::create(eventName, [this](EventCustom* e){ /* do something */ });
      【解决方案3】:

      你也可以这样用:

      button->addTouchEventListener(CC_CALLBACK_2(HomeScene::doSomething,this)); 
      

      解决这个问题:-)

      【讨论】:

        猜你喜欢
        • 2019-01-27
        • 2016-11-12
        • 2016-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多