Cocos2d中的CCSequence触发操作

时间:2010-09-07 13:55:09

标签: iphone cocos2d-iphone

我在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变量,用作4个不同精灵的x和y位置:

-(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:

正如预期的那样,startAnimation方法(getRandomCoordinates)中使用的x和y导致了问题。因此,我在触发序列之前删除了所有操作,现在它工作正常。

0 个答案:

没有答案