Я использую Cocos2d 2.1rc0.runAction не работает для спрайтов из CCSpriteBatchNode
У меня есть этот проект, который отлично работал, когда я не использовал CCSpriteBatchNode. Затем я решил использовать узлы партии, чтобы уменьшить призывы к обращению, и мои проблемы начались.
Много чего не работает. reorderChild - одно. Другой - runAction и без runAction Cocos бесполезен.
Это пример метода, который работает без batchNodes и не работает с ним.
// move/rotate all objects
for (int i=0; i<[allObjects count]; i++) {
Card *object = [allObjects objectAtIndex:i];
[object stopAllActions];
CGPoint center = object.position;
center.x = center.x + 100;
center.y = center.y - 200;
CCMoveTo *moveAction = [CCMoveTo actionWithDuration:0.3f position:ccp(center.x, center.y)];
CCRotateTo *rotateAction = [CCRotateTo actionWithDuration:0.3 angle:0.0f];
CCSpawn *action = [CCSpawn actions:moveAction, rotateAction, nil];
[object runAction:[CCSequence actions: action,
[CCDelayTime actionWithDuration:0.1f],
nil]];
}
Совершенно ничего не происходит.
Я попытался устранить CCSpanw и использовать runAction непосредственно с помощью перемещения и ничего не работает. Если я использую регулярные спрайты, он работает.
Объекты в этом массиве основаны на классе на основе CCSprite.
Есть ли обходной путь?
Является ли object.isRunning истинным? – YvesLeBorg
странно ДА, но при запуске этого метода нет действий. Почему это да - еще одна загадка. В любом случае, я добавил строку [object stopAllActions] (см. Мой вопрос), и никаких изменений нет. – SpaceDog
isRunning - это базовое свойство CCNode, это ДА между onEnter и onExit. hmmm ... больше нет идей на данный момент, проведет быструю проверку с одним из моих узлов партии, чтобы узнать, могу ли я обмануть вашу проблему. – YvesLeBorg