2010-12-12 29 views
0

所以,我想知道是否有可能停止所有動畫,進行諸如「移動一堆敵人動畫片段,移動一些子彈等等」的計算,然後再次開始動畫,以便所有繪圖都會發生立刻。直接管理動畫片段繪圖。 AS3

我的應用程序將在我的遊戲的遊戲循環中。我遇到的問題是我在屏幕上有大約50個敵人,所有這些都在移動速度非常快,我走過陣列並移動每個MovieClip。有一些滯後,我想以任何方式擺脫它。

如果我正確理解AS3,它會嘗試在每次更改每個MovieClip的X和Y值後繪製到屏幕。通過停止動畫,設置這些值,然後重新啓動它,我想我會提高很多。

+0

如果你的敵人和子彈有非常複雜的圖形,@Typeoneerror的建議會有幫助,但仍有50個敵人不是大量的電影剪輯。嘗試將動畫片段實例嵌套到Sprite(它不是像MovieClip這樣的動態類)並關閉交互性(mouseEnabled,tabEnabled,mouseChildren等),然後查看是否可以提高幀率。 @ Iain的帖子中有很多:http://blog.iainlobb.com/2010/11/bunnylandmark-new-flash-game-benchmark.html還有源代碼,看看顯示列表示例並嘗試應用你從遊戲中學到的東西。 – 2010-12-12 12:29:57

回答

0

Flash呈現每幀一次。你可以將所有你想要的東西放在「幀」之間。所以,你現在移動敵人的方式是正確的。使用blitting是一種核選項,你可以獲得很多性能方面的明智,但是你也會失去flash帶來的許多好處,例如旋轉/縮放和鼠標/交互性位。

很難在沒有看到遊戲的情況下給出任何其他指針,但一般來說,儘量避免在大面積上進行透明處理,遮罩費用可能很高,濾鏡可能會沉重渲染。

1

如果性能是您的目標,那麼您可能需要考慮刪除影片剪輯(這些代碼非常昂貴)以適應位曝光。本質上,你正在計算運動,碰撞等等,然後將一個繪製到位圖畫布中,而不是繪製每個MovieClip。

用位圖替換任何矢量藝術也會顯着加快渲染速度。儘量使用盡可能少的幀。查看8bitrocket瞭解更多關於Blitting的信息。

+0

問題在於我的動畫質量令人難以置信。我的藝術家非常接近專業人士,他無法通過這種方式獲得他想要的質量。 – 2010-12-12 18:39:01