2013-02-19 121 views
0

我正在爲iPhone製作應用程序,這是一款2D遊戲。 我已經完成了所有的spritesheet,但現在我需要動畫他們其中的一些: 我的遊戲是一個遊戲,你的英雄應該避免一些障礙。邊界應該移動以給人一種印象,即通過提高速度來增加遊戲的難度(所以英雄看起來越來越快)。我有我的邊界圖像,但真的不知道如何動態地對其進行動畫處理,並且當圖像的末尾即將到來時,將圖像的頂部放在它後面。iOS動畫2D遊戲

注:我知道如何進行翻譯,爲圖像設置動畫,但在這裏我需要更快更快地進行動畫處理,以便動態更改動畫的速度。

感謝您的幫助!

代碼或一個UIImageView:

nuages_bas2 = [[UIImageView alloc] initWithFrame:CGRectMake(-100, 0, 160, 1000)]; 
UIImage * ImageNuages = [UIImage imageNamed:@"Menu_nuage.png"]; 
nuages_bas2.image = ImageNuages; 
nuages_bas2.alpha = 0.0f; 
[menu_principale addSubview:nuages_bas2]; 
[nuages_bas2 release]; 

代碼的動畫之一:第一

- (void)AnimationNuagesBas2 
{ 
nuages_bas2.alpha = 1.0f; 
CABasicAnimation * nuagesbas2 = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"]; 
nuagesbas2.fromValue = [NSNumber numberWithFloat:480.0f]; 
nuagesbas2.toValue = [NSNumber numberWithFloat:-960.0f]; 
nuagesbas2.duration = 35.0f; 
nuagesbas2.repeatCount = 10; 
[nuages_bas2.layer addAnimation:nuagesbas2 forKey:@"nuagesbas2"]; 
} 
+0

你可以發佈一些你使用的代碼嗎?所以我們知道你用什麼課來做動畫等...... – entropy 2013-02-19 23:43:50

+0

完成。翻譯結束時,我的UIImageView必須重複,並且翻譯動畫必須具有動態持續時間。 – user2057209 2013-02-19 23:53:49

+0

只是爲了澄清,你是否希望它在每次重複之後變得更快(因此它使用當前代碼更快更快)。或者你希望它在每次重複時都能逐步加快速度? – entropy 2013-02-19 23:57:33

回答

1

第一件事,如果你正在做一個遊戲,你可能不應該使用UIKit的,除非這是非常簡單的事情。你應該看看庫如cocos2d

至於這個問題,你可能想看看CAKeyframeAnimation。我會嘗試勾畫出一些代碼來做這樣的事情,但你可能想修改它(另外,我沒有辦法測試它)。

請注意,下面的內容是創建一個關鍵幀動畫,其中的對象每次來回更短的持續時間。

- (void)AnimationNuagesBas2 
{ 
    nuages_bas2.alpha = 1.0f; 
    CAKeyframeAnimation * nuagesbas2 = [CAKeyframeAnimation animationWithKeyPath:@"transform.translation.y"]; 
    float from = [NSNumber numberWithFloat:480]; 
    float to = [NSNumber numberWithFloat:-960]; 
    int repeatCount = 10; 
    float duration = 6; 
    float durationDecrease = 0.5; 
    float t = 0; 
    NSMutableArray * values = [NSMutableArray array]; 
    NSMutableArray * times = [NSMutableArray array]; 
    [values addObject:from]; 
    [times addObject:[NSNumber numberWithFloat:0]]; 
    for (int i = 0; i < repeatCount; i++){ 
     t += duration/2; 
    [values addObject:to]; 
    [times addObject:[NSNumber numberWithFloat:t]]; 
     t += duration/2; 
    [values addObject:from]; 
    [times addObject:[NSNumber numberWithFloat:t]]; 
    duration -= durationDecrease; 
    } 

    [nuages_bas2.layer addAnimation:nuagesbas2 forKey:@"nuagesbas2"]; 
} 

另一種方法是將自己設置爲代表的CABasicAnimation與0的repeatCount設置然後,每次它這樣做的時候,你有一個較小的時間重新啓動它。

+0

今天下午我會試試你的解決方案。你對使用UIImageView移動背景有什麼想法嗎?並且該圖像重新啓動後,fisrt圖像結束?所以我可以用一張圖片製作一個無限背景 – user2057209 2013-02-20 07:01:45

+0

我不確定你的背景移動是什麼意思(是不是有一個簡單的UIImageView背後的一切動作?)。至於無限重複,最好的方法似乎有一個非常大的repeatCount – entropy 2013-02-20 11:16:35

+0

是的,只有這一點,我想有一個UIImageView使背景移動!但是我不知道如何只用一個圖像來製作這個圖像? – user2057209 2013-02-20 19:01:14