我在iPhone上設置了一個非常簡單的「遊戲」。事物四處移動,旋轉,可以與它們交互等等。在模擬器中,它運行良好,但在設備上它的速度大約爲0.25 FPS,而且速度很慢,顯然沒有時間識別觸摸。如何在iPhone上手動設置動畫效果?
這最初只是使用UIView和Item
的數組,每個數組都有一個Tick和一個Draw函數。在應用程序開始時,我開始了一個定時器,它以60 FPS拍攝,它叫Tick,在Tick結束時,它調用[self setNeedsDisplay];
它的工作速度非常慢,所以我將Item
類轉換爲CALayer
類的子類,移動圖層而不是重繪項目。但是,我正在手動,逐幀地移動CALayer
,而這顯然不是好的。它仍然太慢。所以我告訴它移動到它的最終目的地,並給它一個等於它到達那裏所需的滴答數量的長度。
工作正常,但有些情況下,如果您與某些東西交互,應該停止移動,並改爲執行其他操作。所以我回到移動每個訂單,而不是設置新的頭寸,而是將其包裝在CATransaction中,併爲交易賦予與tick相同的長度。
工程確定,但新的問題出現了:如果我想動畫的東西,我仍然要使用[自setNeedsDisplay]每一個刻度,它調用drawInContext:
,這似乎是一個主要放緩的問題。
是不是隻有一種方法來手動繪製像我之前做的一切?我只是在進行CGContext *調用,並且它在模擬器中工作正常!如果我在J2ME或嵌入式C++中實現類似的東西,它會工作的很好。我錯過了什麼?我真的需要學習OpenGL來做任何有趣的手動動畫嗎?