2013-07-27 26 views
0

對於UIView動畫,我有一個相當簡單的問題,但它花了我整整一天的努力去解決。如何在代碼中調用UIView動畫

我想實現一個UIView動畫,它將由代碼中的事件觸發。這意味着它不是由用戶按下按鈕觸發的,也不是由視圖加載引起的,它會由遊戲內部發生的某些事件觸發(圖像的爆炸效果)

迄今爲止我所看到的教程和視頻所有在viewDidLoad中聲明它們的UIView動畫,這對我不起作用,因爲我不想馬上發生動畫。

有些在用戶手指觸發的「觸摸」內寫入。由於人的觸摸不會啓動動畫,因此這不起作用。

我的遊戲利用了一個計時器和「gameLoop」,所以當我在主要方法內寫入動畫代碼時,它會在1秒內調用100次以上(我在控制檯中看到動畫日誌一遍又一遍地重複)。

我認爲這是因爲主要的方法是附加到主計時器刷新它每1秒。

我應該在哪裏輸入UIView動畫的代碼,如果我想讓它只被調用一次而不是無限?

我應該爲動畫形成一個新的方法嗎?如果有的話我怎麼稱呼那個方法?

感謝所有能幫忙的人。

回答

0

它可以像這樣的東西很容易做到:

@property (nonatomic) BOOL explosionHappened; 

- (void)gameLoop { 
    // <lots of your code here> 
    if (explosionHappened) { 
     [UIView animateWithDuration:1.0 animations:^{whatever-you-like;}]; 
     explosionHappened = NO; 
    } 
}