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

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

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

    饒榮慶 -- 您今天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工作室 閱讀(725) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 麻豆精品国产免费观看| 成人黄18免费视频| 国产亚洲精品精品国产亚洲综合| 亚洲精品av无码喷奶水糖心| 好大好硬好爽免费视频| 亚洲av无一区二区三区| 午夜一级毛片免费视频| 在线视频亚洲一区| 久久精品国产亚洲AV不卡| 日韩免费码中文在线观看| 久久亚洲高清综合| 国产无遮挡无码视频免费软件| 亚洲va久久久噜噜噜久久天堂| 秋霞人成在线观看免费视频| 亚洲AV无码1区2区久久| 国产精品久久永久免费| 亚洲av无码不卡久久| 国产成人在线观看免费网站| www永久免费视频| 亚洲AV日韩AV永久无码久久| 在线看片韩国免费人成视频| 亚洲精品色播一区二区| 亚洲伊人久久成综合人影院| 久久er国产精品免费观看2| 亚洲白色白色永久观看| 日本媚薬痉挛在线观看免费| 高清永久免费观看| 亚洲国产人成在线观看| 免费人成年激情视频在线观看| 国产免费阿v精品视频网址| 亚洲国产成人超福利久久精品| 国产免费啪嗒啪嗒视频看看| 97国免费在线视频| 久久久久亚洲国产| 久久久久亚洲精品男人的天堂| 8x8x华人永久免费视频| 狠狠综合亚洲综合亚洲色| 亚洲爆乳无码一区二区三区| 免费的涩涩视频在线播放| a级毛片视频免费观看| 亚洲码欧美码一区二区三区|