stopAllActions работает, но stopActionByTag ничего не делает - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть действие CCRepeatForever с тегом 20. Я называю это:

  [player stopActionByTag:20];

Замечание происходит.

Я называю это:

  [player stopAllActions];

Останавливается. Любая идея? Действие создается так и работает нормально:

 CCRepeatForever *repeat=[CCRepeatForever actionWithAction:animate];
 repeat.tag=20;

 [player runAction:repeat];

обновление: я также попытался установить animate.tag=21 и остановить это действие самостоятельно или в дополнение к действию repeat, но ни одно из них не работает.

1 Ответ

3 голосов
/ 02 декабря 2011

Это должно сработать, я сделал быстрый тест с stopActionWithTag, используя CCRepeatForever, и он останавливает его правильно.

Я могу только представить два случая, когда он не будет работать:

  1. У вас есть несколько действий с тегом = 20, выполняющихся с одним и тем же объектом.
  2. Объект, которому вы отправляете runAction, является другим объектом, чем тот, которому вы отправляете stopActionByTag.

Первое легко проверить.Если этот код решает вашу проблему, вы выполняете несколько действий с одним и тем же тегом на объекте игрока:

while ([player getActionByTag:20]) {
    [player stopActionByTag:20];
};

Последнее маловероятно, но возможно.Один из способов выяснить это - установить точку останова на строке runAction и записать адрес переменной player.Затем установите другую точку останова в строке stopActionByTag и сравните адрес этого игрока с предыдущим.Если они не одинаковы, то это будет проблемой.

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