2014-06-30 182 views
1

我正在製作一款遊戲元素,一名男子向目標射擊一枚火箭,然後目標爆炸。我用畫布和線程做這個,總是重繪整個屏幕。 可以通過其他方式完成嗎?因爲如果會有很多動作,遊戲會吃掉很多的記憶。所以我正在尋找優化以及如何在不重繪整個屏幕的情況下爲對象設置動畫。安卓遊戲畫布

回答

1

如果你使用surfaceview或紋理視圖,你可以鎖定屏幕的一部分,然後重畫那個。 (我推薦textureview over surfaceview)。

Canvas android.view.TextureView.lockCanvas(Rect dirty)。 public Canvas lockCanvas(Rect dirty)。 在API級別14中添加。 與lockCanvas()類似,但允許指定髒的矩形。該矩形內的每個像素都必須寫入;然而,在下一次調用lockCanvas()時,髒矩形外部的像素將被保留。如果底層表面紋理不可用(參見isAvailable())或者表面紋理已經連接到圖像生成器(例如:相機,OpenGL,媒體播放器等),則此方法可返回null

+0

如果我需要animati上?當物體移動時,我是否必須重繪背景?那裏的表演呢? – Droid

+0

Textureview允許動畫,設置線程來鎖定畫布,執行編輯畫布的'draw'方法,然後解鎖;必要時重複(代碼與SurfaceView類似,其中有很多教程)。您將不得不重新繪製要繪製到的矩形中的所有內容。我不確定確切的表現,但我會認爲它是做動畫的最好的非opengl方法。我有一個較小的動畫,但我不得不拖延,因爲它太快了。 – Whitney

1

只是一個建議。

爲什麼你不使用遊戲框架,如libgdx? 它會帶你從純粹的android代碼,但它會讓你專注於你的遊戲,而不是內存管理。(你的遊戲也可以在其他平臺上播放)

如果你喜歡這個想法,還有其他的工具(unity,gamesalad等)

+0

libgdx我只知道java。 – Droid

+0

相當遲的回覆,但我認爲你錯了,我沒有嘗試過,但libgdx使用gradle,並且android studio默認使用gradle,基本上是intelliJ Idea重構了我在libgdx文件裏看到的一些智能設置指令,當然libgdx使用java語言,所以你不必學習另一種語言 –

+0

是的,現在它與android-studio一起工作了。任務在libgdx。謝謝) – Droid