我正在尝试触摸精灵上的触摸事件,我已经通过许多链接和教程,但它无法正常工作。使用Xcode IDE和Cocos2dx 2.1.4。 这是理想情况下应该在cpp文件中获取触摸事件的方法。
bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){
}
我正在尝试在精灵上实现触摸事件。我已经创建了这样的精灵:
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCSprite *backGroundSprint = CCSprite::create("bg.jpg");
CCSize imageSize = backGroundSprint->getContentSize();
backGroundSprint->setScaleX(size.width/imageSize.width);
backGroundSprint->setScaleY(size.width/imageSize.height);
backGroundSprint->setAnchorPoint(ccp(0, 0));
this->addChild(backGroundSprint,0);
我也通过这样做启用了触摸:
this->setTouchEnabled(true);
in
bool HelloWorld::init(){
在我的.h文件中我有这个
公共:
virtual void onEnter();
virtual void onExit();
virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
virtual void ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
virtual void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
答案 0 :(得分:2)
为了让您的CCLayer获得接触,您必须做两件事:
setTouchEnabled(true)
。virtual void registerWithTouchDispatcher();
* .cpp文件中的第二个方法应如下所示:
void Strona::registerWithTouchDispatcher()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, this->getTouchPriority(), true);
}
此外,您还必须记住CCSprites没有触摸功能,因此在使用此方法时,您必须检查精灵边界框内是否发生触摸(或根据您的需要进行其他测试)。 / p>
答案 1 :(得分:1)
启用触控并在.cpp文件中注册
this->setTouchEnabled(true);
CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);
答案 2 :(得分:1)
在Cocos2dX中检查Sprite TouchEvent
void GameLayer::ccTouchesBegan(CCSet* touches, CCEvent* event)
{
CCTouch* touch = (CCTouch*)( touches->anyObject() );
CCPoint location = touch->getLocationInView();
location = CCDirector::sharedDirector()->convertToGL(location);
if(sprite->boundingBox().containsPoint(location))
{
CCLog("Sprite Touched");
}
}