【问题标题】:Handle the touch event within a moved layer in cocos2d-x cpp project?在 cocos2d-x cpp 项目中处理移动层内的触摸事件?
【发布时间】:2013-11-20 13:08:42
【问题描述】:

在我的项目中,我有一个包含很多 CCLabelTTF 的层。并且图层可以向左或向右移动。我已经实现了三个 ccTouch 事件。现在我想为每个 CCLabelTTF 添加触摸事件。当用户触摸 CCLabelTTF 并来到另一个场景时。我能做些什么? 提前谢谢你。

bool  ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
void  ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
void  ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);

以下详情:

bool  WallScene::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
touchbeginpoint = ccp(pTouch->getLocation().x , pTouch->getLocation().y);
touched=true;
return true;
}
void  WallScene::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
touched=false;
}
void  WallScene::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
{
CCPoint newpos=ccp(pTouch->getLocation().x , pTouch->getLocation().y);
CCPoint temppoint=ccp(newpos.x-touchbeginpoint.x, newpos.y-touchbeginpoint.y);
changepoint =ccp(changepoint.x+temppoint.x, changepoint.y+temppoint.y);
////////////////
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();

if(changepoint.y!=0)
    changepoint.y=0;

if(changepoint.x>=0)
    changepoint.x=0;

if (changepoint.x<=-3000*rescale+visibleSize.width)
    changepoint.x=-3000*rescale+visibleSize.width;
////////////////
this->setPosition(changepoint);
touchbeginpoint = newpos;
}

【问题讨论】:

  • 有什么理由不使用带有 CCMenuItemLabel 对象的 CCMenu 而不是 CCLabelTTF 吗?
  • @YvesLeBorg 我有很多标签,我无法将它们全部放入 CCMenu。
  • 这就像说'我有这么多精灵,我不能把它们都放在一个应用程序中'......你将标签作为孩子添加到某物上,有什么区别?

标签: c++ cocos2d-x


【解决方案1】:

创建 CCLabelTTF 的子类并覆盖该类中的触摸方法,并在这些方法中执行您想要的任何操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多