只是想知道如果一个节点的位置如果它没有移动就会得到当前位置,但是如果正在执行一个CCMoveTo动作,我需要它正在移动的位置。
这已经内置了,或者我是否必须自己实施,如果有任何关于我将如何进行的建议?
感谢您的帮助, 本
答案 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操作的位置。