Обычно, если уже есть встроенные методы, которые «однострочно» дают вам информацию, которую вы хотите, например, используя [[CCDirector sharedDirector] running Scene]
для получения текущей сцены, плохая идея создать ивар отслеживать информацию для последующего запроса.
Но если использование встроенных методов является хакерским или многословным, без гарантии точности, то лучше создать ивар.
Итак, просто создайте ivar на этом узле, который вы обновляете при каждом изменении позиции или назначении действия CCMoveTo.
Примечание. Я называю метод -(NSArray *)getActionsByTarget:(id)target
хакерским, поскольку не гарантируется, что в нем можно найти действие CCMoveTo
. Действие может быть встроено глубоко в [CCSequence actions:[CCFadeIn ...], [CCSpawn actions:[CCCallBlock actionWithBlock: ^{ [self runAction:[CCSequence actions:[CCDelay ...], [CCMoveTo ...], nil]]; }], [CCMoveTo ...], nil], [CCMoveTo ...], nil]
. Теперь, как в мире вы могли бы реализовать логику, которая может правильно найти все три CCMoveTo
и определить, какая из них даст окончательную позицию?