CCNode получить позицию, в которую перемещается действие - PullRequest
0 голосов
/ 10 июня 2011

Просто интересно, как я могу получить позицию узла, которая будет текущей позицией, если он не движется, но если выполняется действие CCMoveTo, мне нужна позиция, в которую он перемещается.

Это уже встроено, или мне придется реализовать это самому, если да, какие-либо предложения о том, как мне поступить?

Спасибо за помощь, Бен

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Обычно, если уже есть встроенные методы, которые «однострочно» дают вам информацию, которую вы хотите, например, используя [[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 и определить, какая из них даст окончательную позицию?

0 голосов
/ 10 июня 2011

Вам необходимо иметь любой объект действия CCMoveTo, а затем искать его по объекту CCNode, положение которого вы хотите получить.Если вы нашли объект CCMoveTo, который предназначен для объекта CCNode, то вы можете получить позицию из объекта CCMoveTo.Например, добавьте - (NSArray *) getActionsByTarget: (id) целевой метод или что-то подобное к классу CCActionManager.

Или создайте производный класс из CCNode, чтобы иметь позицию действия CCMoveTo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...