我正在使用cocos2d-x v3.3rc0
我正在尝试处理多点触摸,但是我只收到一次触摸。
它的行为与单点触摸(而非多点触摸)相似。当我触摸多于一根手指时,onTouches开始仅被调用一次。

希望有人可以帮助我解决这个问题。

这是我的启用多点触控的代码

ControlLayer.h

#include "cocos2d.h"

class ControlLayer : public cocos2d::Layer{


public:

    static ControlLayer* create();
    virtual bool init();

    void onTouchesBegan(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event *unused_event);
    void onTouchesMoved(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event *unused_event);
    void onTouchesEnded(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event *unused_event);

};

ControlLayer.cpp
bool ControlLayer::init(){

    if (!Layer::init()){
        return false;
    }

    auto touchListener = EventListenerTouchAllAtOnce::create();
    touchListener->onTouchesBegan = CC_CALLBACK_2(ControlLayer::onTouchesBegan, this);
    touchListener->onTouchesMoved = CC_CALLBACK_2(ControlLayer::onTouchesMoved, this);
    touchListener->onTouchesEnded = CC_CALLBACK_2(ControlLayer::onTouchesEnded, this);

    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener, this);

    return true;
}

void ControlLayer::onTouchesBegan(const std::vector<Touch*>& touches, Event *unused_event){
    CCLOG("onTouchesBegan[%lu]", touches.size());
}
void ControlLayer::onTouchesMoved(const std::vector<Touch*>& touches, Event *unused_event){
    CCLOG("onTouchesMoved[%lu]", touches.size());
}
void ControlLayer::onTouchesEnded(const std::vector<Touch*>& touches, Event *unused_event){

}

最佳答案

您必须在项目的iOS部分中启用多点触控,即使项目的其余部分使用C++编写,也要在Objective C中使用。模板项目在应用程序控制器(AppController.mm)中具有[eaglView setMultipleTouchEnabled:NO];行,可以将NO更改为YES。

关于ios - 无法在cocos2d-x v3上进行多点触控工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26696268/

10-09 06:10