我正在尝试使用最新版本的cocos2d-x创建一个简单的应用程序,但是由于某种原因无法将我的触摸连接起来。以下是我的类:
class GameLayer : public cocos2d::Layer
{
public:
static cocos2d::Layer* createLayer();
void update(float dt);
virtual bool init();
CREATE_FUNC(GameLayer);
private:
bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event);
void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event);
void onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event);
};
cocos2d::Layer* GameLayer::createLayer()
{
GameLayer *layer = GameLayer::create();
return layer;
}
bool GameLayer::init()
{
if (!cocos2d::Layer::init())
{
return false;
}
this->schedule(schedule_selector(GameLayer::update));
this->setTouchEnabled(true);
return true;
}
void GameLayer::update(float dt)
{
}
bool GameLayer::onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event)
{
cocos2d::log("You touched %f, %f", touch->getLocationInView().x, touch->getLocationInView().y);
return true;
}
void GameLayer::onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event)
{
}
void GameLayer::onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event)
{
}
我注意到当我调用setTouchEnabled
函数时,内部标志_running
会被设置为false,导致无法注册我的触摸事件。然而,我似乎无法弄清楚这是为什么。是我调用的方式不正确还是顺序不对?
registerWithTouchDispatcher
已经被弃用了,而且getTouchDispatcher()
在Director
上也不再存在了。你有什么想法现在的等效方法是什么? - Kevin DiTraglia