2012-03-14 10 views
0

動作しない描画:ビットマップアニメーションは、私がアンドロイドにsurfaceviewにアニメーションを描画すると、以下のような問題しまった

私はonDraw()にするために、スレッドを使用する - 方法はregulary呼び出される、と私は使用これは:

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

私が描きたいスプライトシートの部分を描画します。 問題は今、私が "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

+0

ちょうどonDraw()が呼び出されても、実際に画面に表示されているわけではないので、代わりにinvalidateを呼び出すことをお勧めします。これは、onCreate()を呼び出すことによってアクティビティが作成され、適切に動作することを期待するようなものです。そう呼ばれることは意図されていません。 drawBitmap()が一度だけ呼び出された場合、これは私の推測です。 – Samuel

+0

大丈夫ですが、問題は今、私のGameThreadがinvalidateを呼び出すことが許されていないことです。なぜなら、Surfaceviewを作成したスレッドではないからです。私はここのようにそれをやった:http://www.droidnova.com/2d-sprite-animation-in-android,471.html - 私はそれを得ることはありません。これに関して2009年以来何か変わったのですか? – Trunksome

関連する問題