2012-03-28 296 views
0

嗨我正在爲iphone做遊戲,當精靈移動時,我希望它在3張圖像之間改變圖像,使它看起來像是在運行。 我現在使用的是cocos2d,對於cocos2d我很新。我知道如何用可可做到這一點,但這不適用於cocos2d。cocos2d動畫精靈

所以我的問題是如何更改3,圖像之間的精靈圖像,並且我想要在手指放在屏幕上的某個位置時循環它?

在此先感謝。

回答

0
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"animations/grossini.plist"]; 

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"grossini_dance_01.png"]; 
sprite.position = ccp(100, 100); 

CCSpriteSheet *spritesheet = [CCSpriteSheet spriteSheetWithFile:@"animations/grossini.png"]; 
[spritesheet addChild:sprite]; 
[self addChild:spritesheet]; 

NSMutableArray *animFrames = [NSMutableArray array]; 
for(int i = 1; i < 15; i++) { 

    CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"grossini_dance_%02d.png",i]]; 
    [animFrames addObject:frame]; 
} 

CCAnimation *animation = [CCAnimation animationWithName:@"dance" frames:animFrames]; 
// 14 frames * 0.2sec = 2,8 seconds 
[sprite runAction:[CCRepeatForever actionWithAction: [CCAnimate actionWithDuration:2.8f animation:animation restoreOriginalFrame:NO] ]]; 
+0

或者按照這個URl http://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d – Anand 2012-03-28 13:33:40

1

這是一個非常適合cocos2d新手的問題。

我會先處理無限動畫。得到這個工作,然後繼續工作,暫停,恢復和翻轉動畫。

您可以使用與添加精靈相同的方法設置動畫。

NSMutableArray *animFrames = [NSMutableArray array]; 
    for(int i = 1; i <= 3; i++) { 
     CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"Sprite-%d.png",i]]; 
     [animFrames addObject:frame]; 
    } 
    CCAnimation *animation = [CCAnimation animationWithName:@"run" delay:0.1f frames:animFrames]; 
    [mySprite runAction:[CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:animation restoreOriginalFrame:NO]]]; 

如果你不熟悉的精靈張,還有大量的免費資源,創建一個精靈表和plist中(TexturePacker有一個很好的接口)

如果你有麻煩這項工作,雷Wenderlich有很好的教程。如果到了這一步這裏有一些指針暫停,恢復,和翻轉動畫

對於暫停或恢復

[mySprite pauseSchedulerAndActions]; 
[mySprite resumeSchedulerAndActions]; 

翻轉動畫每當觸摸方向切換水平方向

mySprite.flipX = YES; 
mySprite.flipX = NO; 
+0

嘿,很酷的解決方案:)它的工作原理除了在init中運行和暫停動作沒有暫停我的精靈的行動 - 開始在觸摸方法暫停和恢復似乎正在工作...任何想法? – raistlin 2013-07-07 16:33:21