方法3:尽可能使用旋转和翻转
这点不用解释了
方法4:使用换调色板技术和自定义图片格式
如果前两种方法还不能满足你对容量的要求 , 而你的游戏中恰好使用了很多仅颜色不同的怪物 , 那么可以试试换调色板技术 。J2ME规范中规定手机至少可以支持png格式的图片 , 每张png都带有调色板数据 , 如果两张图片除了颜色不同而其他(包括颜色数)完全相同 , 则只要保存一张图片和其他图片的调色板 , 这相对于保存多张图片来说节省了不少容量 。不过这个方法挺麻烦 , 你得了解png文件格式 , 然后做一个工具提取出调色板数据和调色板数据块在png文件中的偏移 。内存中保存图像仍使用Image,如果要换调色板 , 则将png文件读入到一个字节数组中 , 根据调色板数据块在png中的偏移 , 用新的调色板代替原来的调色板数据 , 然后用这个字节数组创建出换色后的Image 。也许你觉得保存一张png和n份调色板数据的方法有点浪费 。至少多保存了1份调色板数据啊!如果直接将图像数据提取出来 , 在加上n份调色板数据 , 岂不是更节省容量 。但是使用上面的方法 , 我们还可以用drawImage渲染 。如果这样自定义了图片格式 , 那只有自己写个渲染函数了 , 这倒还可以 , 只不过put pixel的速度在某些机器上非常慢 。或者自己构造png格式数据,再使用Image.如果你真得决定这么做 , 我还有个小建议 , 不要对图像数据进行压缩 , zip压缩大多数时候比你写得压缩算法好(参见J2ME Game开发笔记-压缩还是不压缩) 。论坛上有位朋友提过使用bmp格式代替png格式 , jar中图片容量更小 , 也是一个道理 。
二 减少图片所占内存
1 图片所占内存的计算
png图片所占用的内存并不对应于图片容量 。图片占用的内存的计算为:width*height*bpp 。bpp即为系统内置的颜色位数 。以Nokia 6600为例 , 象素格式为565共16位 。所以一张100*100的图片占用100*100*(16/8)=20000字节 , 约为19.5k的内存 。象素格式是固定的无法改变 , 所以只有减少图片的宽和高才能降低其消耗的内存 。
2 减少Image对象数量可节约大量内存
减少Image对象数量不等于减少图片数量 。我的意思是说 , 将一张集成图保存在一个Image对象中 , 通过setClip的方法从这个Iamge对象中选取你需要的图像渲染 。不过这个方法牺牲了一点速度 , 每帧都从集成图Image中减切图像的速度比无减切的渲染慢 。但对于数目不多的渲染 , 比如精灵 , 使用这个方法没问题 。这个方法还有一个问题就是不能释放集成图中不需要的图片 , 这就要看你集成的程度了 。从图片容量和内存管理的角度综合考虑 , 我一般使用二次集成的方法 。比如有n个精灵,先将各精灵所有的图片集成到一张集成图中 , 得到n张集成图 , 然后将这n张集成图再次集成到一张更大的集成图中 。这样在jar中只存在一张集成图 。使用时 , 先将大集成图分割载入到n个Image对象中即可 。这样各个精灵的图片可以单独管理了 。
3 使用旋转和翻转
只保存一个原始的Image,需要时再旋转或翻转
手机修改群
中级篇
按键修改之getGameAction(keyCode)
通过修改游戏键值 , 我们知道keyPressed(keyCode)是怎么回事 。现在 , 我们来讲讲按键的另一种方式:getGameAction(keyCode)
同样以简单基础为切入点 , 这里不会讲太复杂的深入研究 。
getGameAction(keyCode)
也就是说 , 这个值是由KEYCODE所得来的 , 值列表:
键名KEYCODE GAMEACTION
导航键上:-11
导航键下:-66
导航键左:-22
导航键右:-55
中键:-208
数字键1:499
数字键2:501
数字键3:5110
推荐阅读
- 高祖是什么辈分
- 率土之滨蜀骑张飞怎么搭配 长坂之吼张飞技能介绍及使用攻略
- 电子版一寸照片的尺寸是多少
- 怎么改签高铁票 如何改签高铁票
- 84消毒液消毒怎么用
- Win7系统IE浏览器无法打开网页如何解决?解决Win7系统IE浏览器无法打开网页的方法说明
- 锦纶是什么面料优缺点
- 河中石兽翻译 河中石兽全文翻译
- win10关闭杀毒防护已经关闭了为啥还是删除文件