次のコードがあります。
this.getGame().getGraphics().drawBitmap(Assets.playScreen_LaserBeamAnimation, new Rect(0, 0, 100, 750), new Rect(0, 0, 100, 750), null);
this.getGame().getGraphics().drawBitmap(Assets.playScreen_LaserBeamAnimation, new Rect(0, 200, 10, 800), new Rect(0, 0, 200, 600), null);
最初の render ステートメントはレンダリング0.6 - 1 second
に時間がかかります。2番目の周り1 millisecond
。
ビットマップは大きく968 KB
、次のコードでロードされます:
public Bitmap readAssetsBitmap(String filename) throws IOException {
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeStream(assets.open(filename), null, options);
if(bitmap == null) {
WSLog.d(Game.GAME_ENGINE_TAG, this,"File cannot be opened: It's value is null");
throw new IOException("File cannot be opened: It's value is null");
}
else {
WSLog.d(Game.GAME_ENGINE_TAG, this,"File successfully read: " + filename);
return bitmap;
}
}
catch (IOException e) {
WSLog.d(Game.GAME_ENGINE_TAG, this,"File cannot be opened: " + e.getMessage());
throw new IOException("File cannot be opened: " + e.getMessage());
}
}
画像の読み取りとビットマップの設定には時間がかかると思いますが、その小さな領域のレンダリングにはそれほど時間がかかりません (不思議なことに、それは最初のレンダリング呼び出しにすぎません)。
最初のレンダリングに時間がかからないようにするにはどうすればよいですか?
注意: スケーリングを行う必要はありません (私は信じています)。