饒榮慶 -- 您今天UCWEB了嗎?--http://www.ucweb.com

          3G 手機開發網

             :: 首頁 :: 聯系 :: 聚合  :: 管理
            99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks
          原文 http://hzxdark.javaeye.com/blog/175628
          3GEYEg2Q[*H.Chttp://www.3geye.net/?3/viewspace-3177

          7@]#MI;tR&~3kbox 是一個MVC2模型的J2ME開源框架,用于快速開發可擴展的J2ME MIDP應用程序。
          $J.LGL+MaC\3主頁:http://kbox-mvc.sourceforge.net/3GEYE1K@N9jQ+\5Au

          #H1yL3T/f%~c @Tp3其結構如圖:3GEYE9W#NM4cTZ,Sv
          3GEYE j{%T!R/CA

          M o2b.w-u-X aUB33GEYE Pl1I-i LV^

          -Sz4O})v6x"i$gp Y V3所有的可視組件都位于需要經由MIDlet來顯示,而MIDlet上的所有事件,包括鍵盤事件,按鈕事件提交到ActionController 上, ActionController跟據配置文件,將事件轉發給相應的Action,Action將處理結果得到的可視組件(Displayable)通過 ActionForward返回MIDlet顯示。3GEYEt"v[2\O1kpY I{

          a\&B'AzW:G%^%r3KBOX的使用非常簡單, 以一個HELLO WORLD 為例:
          i$iR9L},mR3創建一個MIDLET:3GEYE([.MKl3qX/o#}9P
          3GEYE!Ku\w2P] G xU
          public class TestMIDlet extends MIDlet{3GEYE na+C?0D ?N x-Ma
          3GEYE"Jq|.xSqs?E

          F,sw%SHH rj33GEYEq I5GmP
          protected void startApp() throws MIDletStateChangeException {3GEYE{Y'bJA%`$I
          3GEYEq_7S-E^` \ k
          ActionController controller = ActionController.getInstance(true);3GEYE0eMXJu8@

          2h-Q ^n&OS_ [N9T E3controller.registerViewer(this); //Register the MIDlet3GEYE(k8H!w0[mh2d-\
          3GEYE7AV-G9ENU&bUg
          3GEYE"C @$|jCA9U o
          3GEYE r8Y;X\ D2f8K E sA
          MyKGameCanvas mgc = new MyKGameCanvas("MYGC"); //Create a GameCanvas3GEYE2LI V hVD/W
          3GEYE%T,_T%jQ

          k }7N!^^7S9}3
          2F F p?Pb,H/o5B3KCommand kc = new KCommand("TEST BUTTON", Command.HELP,1,"MYCMD",null);
          XW!_LjoZX0[3mgc.addCommand(kc);
          s,w |{*l1vR/j3mgc.setCommandListener(controller);
          l$yH4JR{+y3Display.getDisplay(this).setCurrent(mgc);3GEYE,q?~.Bq Q6d mJ0ISY
          3GEYE\7I ~ZK/l$}
          }
          7@?d^F$xQY{/f3
          W*vKBf G jB3
          YNAUuq7O;y?y3
          T%u/\ o?o?3}
          I dCq!Iz33GEYECtX#N.~`OE-y s6q$i
          創建一個Canvas:3GEYEpK a[X"R+u

          %f"[?wh7y$^)z9{B3public class MyKGameCanvas extends KGameCanvas{3GEYEM.m`SV"a:kV

          S"\M3[Byz T3
          v Q XWN-^3
          %lZ2@@9S l3public MyKGameCanvas(String uniqueID) {3GEYELn?~!M#fU7B H EB
          3GEYE[Mu} J@:fX]%M
          super(uniqueID);
          'Y6Y U%}?Z|J2Uq$G F3
          *A%Du`jc3}3GEYE qH#f!A+C/L&I ^_ P

          hE/B4p o+vKO3public void showString(String string){
          cYn:{}+C i33GEYEe+zs1xj9cDO ~U
          Graphics g = this.getGraphics();
          'q{@`+y'_x"Tz33GEYEx2e0U%`u-s J.SP?R!W
          g.setColor(0xFFFFFFFF);
          -r1DBq#O-|*x3
          P \W(l j"])s+[l3g.fillRect(0, 0, this.getWidth(), this.getHeight());
          )Y.x7|6d kSy3
          %}+n4]cc)Z Jb3g.setColor(0xFF000000);3GEYE@;S'Z8C O d(Q5o

          -UTFj,Lmq3g.drawString(string, 0, 0, Graphics.TOP|Graphics.LEFT);
          Ck:j#F7cx33GEYET(G7YG V3h
          this.flushGraphics();
          g/|1aA4@ t s)x!f1HS33GEYE[E\x.y!TZ C?gEV
          }
          3[3H`.rX-VP3
          ^$u&ay s'N"w:|6I3}3GEYEV2rmV!`#f;R`oQ
          3GEYE"RM-B6j6]+?Bge
          創建相應的Action:3GEYE6X0Z9z$Q~Z9Q
          3GEYEs4~u4B5B1D*_
          public class TestAction implements Action{3GEYEkl6k Rt-{Qo;Zy
          3GEYE~8~6R4Io6R S
          public void excute(KCommand cmd, Item item, Displayable dis, ActionForward forward,Hashtable parameters) {3GEYEQQ6zDR:R*}OUc

          *KR+B f jHvl33GEYEko~8^|Jk

          Fd ch-xvH2s{y t3MyKGameCanvas mkc = ((MyKGameCanvas)dis);
          K.B$Ba+pTRmBq3
          8[zS3T8H3mkc.showString("hello world! From "+mkc.getUniqueID()+"."+cmd.getUniqueID());
          _pb8qFh3
          #g"N/h1dk/Z!nY3}
          R9j MMjuX3
          rH~b/e Z r3}
          z/vlv R i}(DL N?m33GEYE3M^b;u LQ
          將按鈕事件注冊給Action:3GEYE7Z8m0dQ H+}H)q

          %{^mRl$lb3DEBUG=true //open the debug model of KBOX
          gt't|dH33GEYE9qv s'KS K(?-G*Wt
          CMD.MYCMD.ACTION=action.TestAction
          3]v%njQ33GEYE7c%R [y:?-M:w
          注意這里的MyKGameCanvas 繼承的KGameCanvas,而不是GameCanvas。KBOX的KGameCanvas類繼承自GameCanvas,當并沒有使用 GameCanvas那種使用線程監聽狀態的模型,而是重寫了keypressed等方法來處理鍵盤事件。另外,KGameCanvas的重寫的按鈕事件 的處理已經實現了重復按鍵情況,而且可以指定重復按鍵的靈敏度,這點是非常好用的:)3GEYED4_%h~ y#s,]&\
          3GEYESP4D1Nj/?*ov
          KCommand是KBOX擴展的按鈕組件。
          "LOB9Dw&O!m3KCommand kc = new KCommand("TEST BUTTON", Command.HELP,1,"MYCMD",null);3GEYE~bu U-[A.`$S,~
          第一個參數是按鈕的名字,第二參數是按鈕類型,第三個參數是優先級,第四個參數是ID名,用于配置文件的映射,對應“ CMD.MYCMD.ACTION=action.TestAction”中的MYCMD,第五個參數是可傳遞參數,是一個Hashtable類型,用于 向Action傳遞參數(當然你喜歡的話,也可以將參數提到配置文件里去……)。3GEYE8ElR"T9VmC,D P

          5N o0_&Q

          爬蟲工作室 -- 專業的手機軟件開發工作室
          3G視線 -- 專注手機軟件開發
          posted on 2008-03-25 22:54 3G工作室 閱讀(726) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 巴南区| 双江| 温州市| 新田县| 临海市| 辽中县| 石棉县| 曲阳县| 治多县| 正定县| 会宁县| 西盟| 桑植县| 桐乡市| 成安县| 资兴市| 泗洪县| 定西市| 南安市| 凤冈县| 廊坊市| 蓝山县| 丹凤县| 正镶白旗| 建始县| 辛集市| 左云县| 万安县| 驻马店市| 永善县| 石景山区| 和林格尔县| 南召县| 丹江口市| 凤凰县| 永兴县| 中牟县| 外汇| 望都县| 盐津县| 惠东县|