返回列表 回復 發帖

(教學)自動適頻之修改方法

本帖最後由 aqc121 於 2011-3-5 05:25 編輯

須用軟體:HALO(請去<A
href="http://bbs.mpbus.com/thread-37288-1-1.html">http://bbs.mpbus.com/thread-37288-1-1.html下載)



自適屏的修改
把遊戲改為自適屏是有前提條件的,必須是遊戲的顯示是用全局變量控制的!比如天之痕的這段:
<FONT
color=red>     public b()
     {

         j = false;

         k = 0;

         l = 0;

         m = null;

         i = null;

         c = 176;

         d = 208;

         e = c / 2;

         f = d / 2;

     }
其中c,d就是寬高的全局變量.

再介紹兩個函數,getWidth()I,getHeight()I,他們的意思是返回當前屏幕的寬高值.假如你是E398的手機,這兩個值分別是176,208.那把

         c = 176;

         d = 208;

改為:

         c =
getWidth()I;
         d =
getHeight()I;


他就可以根據機型自適屏了.我們用HALO2來修改,發現這段代碼是出現在<init>裡的,並且是採用了com/nokia/mid/ui/FullCanvas,而getWidth()I,
getHeight()I用的是javax/microedition/lcdui/Displayable類,也為了遊戲的兼容性,我們把<init>裡前兩句

aload_0
invokespecial
com/nokia/mid/ui/FullCanvas/<init>()V
改為

aload_0
invokespecial
javax/microedition/lcdui/Canvas/<init>()V

並在常量池的繼承的父類由

com/nokia/mid/ui/FullCanvas
改為
<FONT
color=red>javax/microedition/lcdui/Canvas
並把
<FONT
color=red>sipush 176
putstatic main/b/c I
sipush 208
putstatic
main/b/d I


改為
aload_0
iconst_1
invokevirtual
javax/microedition/lcdui/Canvas/setFullScreenMode(Z)V
aload_0

invokevirtual javax/microedition/lcdui/Displayable/getWidth()I
putstatic
main/b/c I
aload_0
invokevirtual
javax/microedition/lcdui/Displayable/getHeight()I
putstatic main/b/d
I





這樣就可以實現遊戲的自適屏了.

最後還要注意全局變量的數值類型,這個遊戲是int類型的.他是32位的,這倒沒問題.但有些遊戲全局變量是byte類型的,byte類型是個8位的整數類型,大小範圍-
128 ~ 127,假如你手機是E398的,

寬高176,208就超範圍了,必須作調整,具體調整方法較複雜我不詳細說了,畢竟這情況較少,有些韓國遊戲偶爾使用,不常見!
[/hide]
1

評分次數

  • qq0922

感謝大大的分享!!
讓我們知道~~
感謝大大分享!
感謝大大的分享

回復 1# loveraina 的帖子

謝謝版主無私的分享:)biggrin
thank you!!
謝大大教學!
可惜小的頭腦比較笨,看了也不懂!
謝謝大大的分享˙ˇ˙
帥喔帥喔帥氣喔
請給我200積分
返回列表