2012-03-14 145 views
0

我買了android系統上surfaceview繪製動畫以下問題:繪製位圖動畫不起作用

我使用一個線程來進行的onDraw() - 方法被調用regulary,我用這個:

c.drawBitmap(pic, partOfTheImage, destination, null); 

來繪製我想繪製的spritesheet的一部分。 現在的問題是,即使我改變「partOfTheImage」,唯一繪製的是先畫的東西。它不改變,沒有動畫。

這裏是在線程代碼:

  try { 
       c = getGw().getHolder().lockCanvas(); 
       synchronized (getGw().getHolder()) { 
        getGw().onDraw(c); 

       } 
     } finally { 
       if (c != null) { 
        getGw().getHolder().unlockCanvasAndPost(c); 
       } 
     } 

有誰知道爲什麼我的心不是位圖更新?

回答

0

你確定它實際上是繪圖嗎? getGw()做了什麼?我不認爲只是調用onDraw()將工作。相反,你應該在視圖上調用invalidate()。無效將導致視圖在將來的某個時刻重新繪製。 Android有一套豐富的動畫工具。你看過他們嗎?

+0

是的,它被稱爲,我已經測試它與logcat ...但它看起來像「drawBitmap()」只被調用一次...而我想用代碼處理動畫,我已經紅了一些這部分的教程,但他們的代碼不會爲我工作:? – Trunksome 2012-03-14 14:23:25

+0

只是因爲onDraw()被調用並不意味着它實際上被放在屏幕上,這就是爲什麼我建議調用invalidate。這就像期待一個活動被創建並通過調用onCreate()來正常工作。不打算這樣叫。如果drawBitmap()只被調用一次,這是我最好的猜測。 – Samuel 2012-03-14 14:27:44

+0

好吧,現在的問題是我的GameThread不允許調用invalidate,因爲它不是創建surfaceview的線程。我這樣做就像這樣:http://www.droidnova.com/2d-sprite-animation-in-android,471.html - 我沒有得到它;自2009年以來做了什麼改變? – Trunksome 2012-03-14 14:55:58