为了使自己游戏资源不被泄露,在网上查询了一些资料,找到了BinCompiler这个工具,感觉挺好用的,不但能够将资源文件打包成.bin(这个后缀可以随便起)而且能够压缩大小。以下是使用方法。因为都是java语法,因此对代码做了点小修改,将他改成了支持 J2ME 和 Android平台以下是用法。至于BinCompiler怎样使用大家可以百度下。
for Android
这里的资源文件放在android工程assets包下
public Bitmap createBitMapToAssets( String binfile, int pos ){
byte buffer[];
int len;
try {
InputStream is = getResources().getAssets().open(binfile);
is.skip(pos);
len = (is.read() & 0xFF) << 24;
len |= (is.read() & 0xFF) << 16;
len |= (is.read() & 0xFF) << 8;
len |= (is.read() & 0xFF);
buffer = new byte[len];
is.read(buffer, 0, buffer.length);
is.close();
is = null;
System.gc();
} catch (Exception e) {
buffer = null;
e.printStackTrace();
System.gc();
return null;
}
Bitmap bitmap = BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
return bitmap;
}
for J2ME:
public Image readImage(String binfile, int pos)
{
byte buffer[];
int len;
try {
InputStream is = this.getClass().getResourceAsStream("/" + binfile);
is.skip(pos);
len = (is.read() & 0xFF) << 24;
len |= (is.read() & 0xFF) << 16;
len |= (is.read() & 0xFF) << 8;
len |= (is.read() & 0xFF);
buffer = new byte[len];
is.read(buffer, 0, buffer.length);
is.close();
is = null;
System.gc();
} catch (Exception e) {
buffer = null;
e.printStackTrace();
System.gc();
return null;
}
return Image.createImage(buffer, 0, buffer.length);
}