Android2.2を使用してゲームを構築しています。メインゲームActivity
はカスタムを使用しますSurfaceView
:
class GameView extends SurfaceView
私が理解していることから、このonDraw()
メソッドは独自のスレッドを実行する必要があります。そのことを念頭に置いて、私は背景画像を追加することを計画していますonDraw()
:
canvas.drawBitmap(wallpaper, 0, 0, paint);
paint = new Paint();
しかし、ゲームを実行すると、非常に遅くなります。私がその行をコメントアウトするnew Paint()
と、ゲームはスピードアップします。
私が間違っていることはありますか、それとも私の問題の解決策はありますか?たとえば、呼び出しの数を減らす方法はありonDraw()
ますか?XML
または、カスタムSurfaceView
クラスに属性を追加しますか?
これが、描画可能な画像をロードする方法のコードです。
public Bitmap loadBitmap(String image) {
Bitmap bitmap = null;
try {
int id = R.drawable.class.getField(image).getInt(new Integer(0));
bitmap = BitmapFactory.decodeResource(context.getResources(), id);
// bitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.RGB_565);
} catch(Exception ex) {
Log.e("loadBitmap", ex.getMessage());
}
return bitmap;
}
onDraw
これがメソッドのコードです。残念ながら、すべてを投稿することはできません。
paint.setColor(Color.BLACK);
canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
canvas.drawBitmap(gameLevel.getBitmap(), 0, 0, paint);
// draw object(1) 320x25
// draw object(5) 50x50 each
// draw object(n) 15x15 each, estimate
// draw object(n) 50x50 each
// collision check, draw hit tile on the image sheet
// draw game information using canvas.drawText()
timeLine++;
前もって感謝します!