2011-03-29 97 views
0

我正在使用Cocos2d引擎,並且遇到了一個奇怪的問題。多個Sprite操作

我有一個精靈。此外,我有2個動畫的精靈。我想在應用程序加載時播放一個動畫,在調用ccTouchevent之後播放一個動畫。

walkAnim = [CCAnimation animation]; 
dropAnim = [CCAnimation animation]; 
for(int q=1;q<12;q++){ 
    [walkAnim addFrameWithFilename: [NSString stringWithFormat:@"walkforward_%.2d.png", q]]; 
    [dropAnim addFrameWithFilename: [NSString stringWithFormat:@"drop_%.2d.png", q]]; 
} 
action = [CCAnimate actionWithAnimation:walkAnim]; 
action.duration = 2; 
id act = [CCRepeatForever actionWithAction:action]; 
[sprite runAction:act]; 

所以,在這裏我們看到一個動畫精靈。

[sprite stopAllActions]; //and here my torture begins 

我試圖創建一個行動的許多方面:
我試圖添加其他AnimateAction,試圖替換當前的動畫,但在發生碰撞的一切結果。

[action setAnimation:dropAnim]; 

CCAnimate* animat = [[CCAnimate alloc]initWithDuration:30 animation:dropAnim restoreOriginalFrame:YES]; 

id action = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:dropAnim]]; 
[player1 runAction:action]; 

崩潰是[CCAnimate actionWithAnimation:]

+(id) actionWithAnimation: (CCAnimation*)anim 
{  
    return [[[self alloc] initWithAnimation:anim restoreOriginalFrame:YES] autorelease]; 
} 

謝謝!

要從另一種方法啓動一個動作,您必須保留動作
例如:[action retain];

+2

,如果你發現你的問題,請在這裏回答自己和接受它的答案,所以其他的可以的情況下,使用它,他們發現這個職位。祝你好運! – 2011-03-30 10:11:51

+1

請注意「並接受它」部分,URLArenzo。另外,請仔細考慮您的標籤。這與Xcode 4完全沒有關係 - 這是一種語言/ API問題。 – 2011-03-30 11:33:45

+0

謝謝,明天我將能夠接受。 – 0xDE4E15B 2011-03-30 11:36:07

回答

0

要從另一個方法,啓動動作,你必須保持行動
例如:[動作保留];然後不要忘了釋放它

-(void)create{ 
    for(int q=1;q<12;q++){ 
     [playerWalkAnim addFrameWithFilename: [NSString stringWithFormat:@"walkforward_%.2d.png", q]]; 
    } 
    playerAction = [CCAnimate actionWithAnimation:playerWalkAnim]; 
    playerAction.duration = 2; 

    [playerAction retain]; 
} 

-(void)launch{ 
    [player1 runAction:playerAction]; 
}