CCNode得到一个动作正在移动它的位置

时间:2011-06-09 20:08:30

标签: cocos2d-iphone

只是想知道如果一个节点的位置如果它没有移动就会得到当前位置,但是如果正在执行一个CCMoveTo动作,我需要它正在移动的位置。

这已经内置了,或者我是否必须自己实施,如果有任何关于我将如何进行的建议?

感谢您的帮助, 本

2 个答案:

答案 0 :(得分:1)

通常情况下,如果已经有“单行”的内置方法为您提供所需的信息,例如使用[[CCDirector sharedDirector] running Scene]来获取当前场景,那么创建它是个坏主意用于跟踪信息以便以后查询的ivar。

但如果使用内置方法是hackish或啰嗦,无法保证准确性,那么最好创建一个ivar。

因此,只需在更改位置或分配CCMoveTo操作时更新该节点上的ivar。

注意:我将-(NSArray *)getActionsByTarget:(id)target方法称为hackish,因为无法保证您可以在其中找到CCMoveTo操作。该行动可能深深嵌入[CCSequence actions:[CCFadeIn ...], [CCSpawn actions:[CCCallBlock actionWithBlock: ^{ [self runAction:[CCSequence actions:[CCDelay ...], [CCMoveTo ...], nil]]; }], [CCMoveTo ...], nil], [CCMoveTo ...], nil]。现在,你将如何在世界上实现能够正确找到所有三个CCMoveTo的逻辑,并推断出哪一个能够给出最终位置?

答案 1 :(得分:0)

您需要拥有任何CCMoveTo操作对象,然后通过您想要获取其位置的CCNode对象进行搜索。如果找到了针对CCNode对象的CCMoveTo对象,则可以从CCMoveTo对象获取位置。例如,添加 - (NSArray *)getActionsByTarget:(id)目标方法或类似于CCActionManager类的方法。

或者,从CCNode创建派生类以获得CCMoveTo操作的位置。