我对 Android 很陌生,但我想尝试制作一个基于图块的游戏,你可以在地图上一个方一个方地移动。
但是我在打开许多资源时遇到了问题,现在我只是为每个图块使用相同的图像(但将来这显然会改变)
问题是在创建大小合适的地图时,此代码:
mBitmap = BitmapFactory.decodeStream(new BufferedInputStream(res.openRawResource(R.drawable.tile)));
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight());
canvas.drawBitmap(mBitmap, mX, mY, null);
模拟时导致错误...
我知道模拟器/手机的内存有限,但我认为它们足以容纳 20x20 的瓷砖?
-我希望有更大的地图,但我能想到的唯一解决方法是在它们不在视野范围内时破坏瓷砖并在它们进入视野时绘制新的瓷砖(当你移动时)
我在这里尝试过这样做:
if (tile.mX > 100 && tile.mX < 600){
tile.mBitmap = null;
} else {
//draw it with code above
}
因此,上面的代码将遍历数组中的每个图块(每一帧),并且只绘制某个 X 坐标内的图块。
我只是想知道这是否是这样做的“方式”?- 移动时打开和清空位图?还是有更简单的方法?我是否错过了一个比 null 更好地破坏位图的命令,这会使我的程序更有效率?
程序在模拟器上运行非常慢,这是一个问题吗?- 或者假设在模拟器上每帧加载许多位图会很慢是安全的吗?它仍然会在手机设备上运行缓慢吗?
任何提示/帮助都会很棒,谢谢!