-3
我正在使用一個遊戲的草率代碼,它會導致OutOfMemoryError:位圖大小超過虛擬機預算。Android遊戲代碼 - OutOfMemory!
如果我是對的,VM預算是16 MB。
我無法直接得到它,我的MainPanel類擴展了SufaceView並實現了SurfaceHolder.Callback。
問題是我需要從另一個類的位圖。我猜這應該不難?
我有一個名爲EnemyCreator的類,它產生了敵人,實體(敵人)需要創建一個位圖。但是,如何在EnemyCreator中創建新的位圖而不是在MainPanel中?
現在位圖在MainPanel中是靜態的,我猜測它是不好的設計,會導致遊戲遭受的內存泄漏(問題狀態:android.graphics.Bitmap.nativeCreate(Native Method))。
例的mainPanel:
public static Bitmap ufoShieldBitMap = (BitmapFactory.decodeResource(getResources(), R.drawable.ufo_shield, optionsAlpha));
public static Bitmap explosion_SmallBitmap = (BitmapFactory.decodeResource(getResources(), R.drawable.explosion, options));
例EnemyCreator:
private void createAstroid() {
int randomAstroid = this.random.nextInt(astroidCount);
int randomXpos = this.random.nextInt(BackgroundManager.INSTANCE.screenWidth - 40);
switch(randomAstroid) {
case 0:
new EnemyAstroid(MainPanel.astroidBitmap, randomXpos, SPAWN_Y, 17, 17); // X, Y, FPS, FrameCount
break;
}
任何人有任何建議嗎?
Downvoted有同樣的問題,因爲它不是一個問題,但要求做「真髒的Android位圖(遊戲(代碼需要修復!」 – Kromster
我做了一些重大的修改與這個問題,我沒有意識到我的問題實際上並不在那裏。 –