cocos2dx 3.X 如何给一个Sprite添加触摸事件,使其按住Sprite出发一个方法,松

cocos2dx 3.X 如何给一个Sprite添加触摸事件,使其按住Sprite出发一个方法,松,第1张

1.首先头文件定义事件处理的函数原型

private:

bool onTouchBegan(Touch* tTouch,Event* eEvent)//手指按下事件

void onTouchMoved(Touch* tTouch,Event* eEvent)//手指移动事件

void onTouchEnded(Touch* tTouch,Event* eEvent)//手指离开事件

2.实现原型

bool ShopItem::onTouchBegan(Touch* tTouch,Event* eEvent){

 if (sprite->getBoundingBox().containsPoint(tTouch->getLocation())){//判断触摸点是否在目标的范围内

/**这里为事件内容**/

return true

 }else

return false

 }

}

void ShopItem::onTouchMoved(Touch* tTouch,Event* eEvent){

/**这里为事件内容**/

}

void ShopItem::onTouchEnded(Touch* tTouch,Event* eEvent){

/**这里为事件内容**/

}

3.绑定事件

auto listener = EventListenerTouchOneByOne::create()

listener->onTouchBegan = CC_CALLBACK_2(ShopItem::onTouchBegan, this)

listener->onTouchMoved = CC_CALLBACK_2(ShopItem::onTouchMoved, this)

listener->onTouchEnded = CC_CALLBACK_2(ShopItem::onTouchEnded, this)

this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, sprite)

这个的实现方法就是让对话框把触摸事件吞噬即可。

头文件加上

[cpp]view plaincopy

void registerWithTouchDispatcher()

bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)

cpp文件里面这样处理:

[cpp]view plaincopy

void HelloWorld::registerWithTouchDispatcher()

{

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate( this, -128, true )

}

bool HelloWorld::ccTouchBegan( cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent )

{

return true

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11963364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存