<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    游戲策劃咨訊
    做一個游戲并不難,難的是做一個好游戲;完美在于積累!

    J2ME游戲中的圖片處理

     

             圖片資源乃是游戲的外衣,直接影響一個游戲是否看上去很美。在J2ME游戲開發中,由于受到容量和內存的兩重限制,圖片使用受到極大的限制。在這種環境中,處理好圖片的使用問題就顯得更加重要。
     本文從容量和內存兩個方面談談J2ME游戲圖片處理的基本方法。

    一 減少圖片容量

    方法1:將多張png圖片集成到一張圖片上。
     這是最基本也是最有效的減少png圖片容量的辦法了。比如你有10張png圖片,每張10×15,現在你可以把它集成到一張100×15或者10×150或者X×X的圖片上去。這張大png圖片的容量比10張png圖片的總容量小很多。這是因為省去了9張圖片的文件頭,文件結束數據塊等等,而且合并了調色板(如果10張圖片的調色板恰好相同,則省去了9張圖片的調色板所占的容量!這是個不小的數字)

    方法2:減少圖片的顏色數
     減少顏色也算是一個方法?我想說的是什么時候減,誰去減。如果游戲完成后發現容量超出,此時在用優化工具減少顏色,雖然能降低圖片容量,但圖片效果可能就不讓你滿意了。所以,在美工作圖時就要確定使用的顏色數,手機游戲使用的是象素圖,即一個象素一個象素點出來的圖像,所以預先規定調色板顏色數量是可以辦到的。不過,最終使用優化工具也是有用的,有時候相差一兩種顏色,但效果差別并不大,容量卻可以變小一些。呵呵,減少顏色確實可以算是一種方法。

    方法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,需要時再旋轉或翻轉


     

    posted on 2005-04-08 18:58 藍色雪焰 閱讀(406) 評論(0)  編輯  收藏 所屬分類: 編程技術
     
    主站蜘蛛池模板: 久久精品成人免费看| 国产精品成人免费观看| 99热在线观看免费| 亚洲爆乳无码专区| 免费无码av片在线观看| 国产精品亚洲精品日韩已满| 伊人免费在线观看| 久久夜色精品国产亚洲AV动态图| 免费人成黄页在线观看日本| 亚洲成a人片在线观看无码| 一个人免费视频在线观看www | 精品一区二区三区免费观看 | 国产精品亚洲专区无码WEB| 在线视频免费观看www动漫| 亚洲乱妇老熟女爽到高潮的片 | a级片免费观看视频| 国产亚洲精品xxx| 久久久久久AV无码免费网站| 久久精品国产亚洲AV嫖农村妇女| 18禁无遮挡无码国产免费网站| 亚洲中文无码a∨在线观看| 免费的一级黄色片| 色吊丝性永久免费看码| 亚洲一区精品无码| 57pao国产成视频免费播放 | 久久久久久亚洲精品影院| 色播在线永久免费视频| 九九视频高清视频免费观看| 亚洲中文字幕无码一区二区三区| 无码人妻久久一区二区三区免费| 亚洲国产成人精品无码区在线网站| 日韩毛片免费在线观看| 国产99视频精品免费视频76| 91亚洲国产成人久久精品网站| 大学生a级毛片免费观看| 日本视频免费观看| 久久夜色精品国产噜噜噜亚洲AV| 女人张开腿等男人桶免费视频| 成年大片免费视频播放一级| 久久青青草原亚洲av无码app| 国产美女精品视频免费观看|