У меня есть три действия, которые запускаются в CCSequence
.Я хочу, чтобы он был запущен: сначала спрайт должен двигаться в центре экрана, а затем запускается действие масштабирования.Но по какой-то причине спрайт перемещается в центр экрана правильно, но при срабатывании шкалы используется старая позиция спрайта.
id actionRotate = [CCRotateBy actionWithDuration:0.6 angle:360];
id disappear = [CCFadeTo actionWithDuration:.5 opacity:0];
id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(removeAlphabetToFindFromView:)];
id actionScale = [CCScaleBy actionWithDuration:0.6 scaleX:10 scaleY:10];
id moveTo = [CCMoveTo actionWithDuration:0.6 position:ccp(windowSize.width/2, windowSize.height/2)];
//[self removeAlphabetToFindFromView2:alphabetToFind];
[alphabetToFind runAction:[CCSequence actions:moveTo,actionScale,disappear,actionMoveDone, nil]];
ОБНОВЛЕНИЕ 1:
Возможно, метод startAnimation
как-то связан с этим.У меня есть открытые переменные x и y, которые используются как позиции x и y для 4 разных спрайтов:
-(void) startAnimation:(CCSprite *) sprite
{
[self generateRandomCoordinates];
id actionMove = [CCMoveTo actionWithDuration:3.0 position:ccp(x,y)];
id actionRotate = [CCRotateBy actionWithDuration:0.0 angle:rotateBy];
id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(finishedMoving:)];
[sprite runAction:[CCSequence actions:actionMove,actionRotate, actionMoveDone, nil]];
}
-(void) finishedMoving:(id) sender
{
if(counter == randomAlphabets.count)
{
counter = 0;
}
CCSprite *sprite = [randomAlphabets objectAtIndex:counter];
[self generateRandomCoordinates];
[self startAnimation:sprite];
counter +=1;
}
ОБНОВЛЕНИЕ 2:
Как и ожидалось, x и yиспользуемые в методе startAnimation (getRandomCoordinates
) вызывали проблему.Итак, я удалил все действия до запуска последовательности и теперь она работает нормально.