2012-01-21 19 views
1

私は学校のプロジェクトのためのゲームを開発していますが、これまでのところうまくいっていますが、背景にdrawColorを使用する代わりにビットマップイメージを使用しようとしていますが、ゲームは遅く、Touch Eventsには反応せず、しばらくしてからクラッシュします。ここで私のコードは、これまでのところ、バックグラウンドを空白にするためにdrawBitmapの前にgetColorを使用しています。これは、動かない文字のスレッドが動きのたびに消えず、消去されないためです。 。Androidゲームの背景

canvas.drawColor(Color.BLACK); 
    canvas.drawBitmap 
    (BitmapFactory.decodeResource(getResources(),R.drawable.park),0,0,null); 

スレッドの静的な背景イメージを移動するには、これ以上効果的な方法があります。

答えて

3

何をしているのかは、レンダリングするたびにビットマップを読み込んでいることです。そのため、メモリの制約のためにしばらくしてからゆっくりとクラッシュします。あなたはそれで終わったら

canvas.drawBitmap(background); 

、あまりにも自由なイメージを忘れないでください:あなたのレンダリングコードで

// run once when you start the game 
Bitmap background = BitmapFactory.decodeResource(getResources(),R.drawable.park); 

:あなたはすべてを初期化するときは、一度自分のイメージをロードする必要があり

background.recycle(); 
+0

私はいつも「それで終わった」という言葉を理解することに問題がありました...いつこれが起こるはずですか?時間があれば、Durzaの例を挙げることができますか? – JoxTraex

+0

@ JoxTraex "これで済む"とは、イメージがもう必要ないときです。たとえば、ゲーム内の背景が異なるレベルが異なる場合、使用しないバックグラウンドイメージをリサイクルしたい場合などです。もはや、メモリを解放する。 – Durza007

+0

私は、ユースケースだったと感じました。情報をありがとう! – JoxTraex

0

アプリケーションが遅くなっている理由は、同じビットマップへの参照が多すぎるために、使用可能なメモリ容量を消費しているため、必要なイメージを解放する必要があるためです。 Romain Guyのグラフィックスやゲームのグラフィックがたくさんあります。 youtubeを見て、あなたはこの問題を処理する方法を学びます。