gpt4 book ai didi

c++ - 在 Cocos2d-x 中如何让这个文本标签移动到新的触摸位置并删除旧标签?

转载 作者:行者123 更新时间:2023-11-28 07:15:23 24 4
gpt4 key购买 nike

我需要发生以下情况:

当我点击时,“移动”出现在点击的位置。(有效)

当我再次点击时:旧的“移动”消失,新的“移动”出现在新位置。(不起作用)。

这是我当前的代码:

void MainGame::ccTouchesBegan(CCSet* pTouches, CCEvent* pEvent)
{
CCSetIterator itr;
CCLabelTTF* labelMove = CCLabelTTF::create("Move", "Arial", 24);
removeChild(labelMove);
for(itr = pTouches->begin(); itr!=pTouches->end(); itr++)
{
CCTouch* thisTouch = (CCTouch*)*itr;
CCPoint labelPosition = thisTouch->getLocation();
labelMove->setPosition(labelPosition);
addChild(labelMove);
}
}

目前所有发生的事情是每次点击位置屏幕上都会出现一个新的“移动”,但旧的都留在屏幕上。是否应该让“removeChild(labelMove)”在创建新标签之前不删除旧标签?

谢谢!

最佳答案

最好在 cctouchesbegan 方法之外创建此标签。在这种情况下,您不必在每次用户触摸屏幕时都删除 child ……您只需更新其位置即可。

如果你做不到,我建议你给标签一个标签,然后通过标签删除 child ......就像这样..

void MainGame::ccTouchesBegan(CCSet* pTouches, CCEvent* pEvent)
{
CCSetIterator itr;
removeChildByTag(1);

CCLabelTTF* labelMove = CCLabelTTF::create("Move", "Arial", 24);
labelMove->setTag(1);
for(itr = pTouches->begin(); itr!=pTouches->end(); itr++)
{
CCTouch* thisTouch = (CCTouch*)*itr;
CCPoint labelPosition = thisTouch->getLocation();
labelMove->setPosition(labelPosition);
addChild(labelMove);
}
}

关于c++ - 在 Cocos2d-x 中如何让这个文本标签移动到新的触摸位置并删除旧标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com