第4回:実機に載せよう(ダウンサイズ)
001: //package com.s_cradle.improve.client;
002:
003: import javax.microedition.lcdui.*;
004: //import com.s_cradle.improve.Constants;
005:
006:
007: /**
008: * 会話画面を描画する Canvas です。
009: *
010: * @author Masaru Yoshimura
011: */
012: public class M/*MessagingCanvas*/ extends H/*
ImproveAbstractCanvas*/ implements CommandListener{
013: //downsize 定数展開
014: /*
015: private static final int BUDDY_LOCATION_Y = TICKER_HEIGHT+6;
016: private static final int MESSAGEBOX_LEFT_INTERVAL = 5;
017: private static final int MESSAGEBOX_RIGHT_INTERVAL = 5;
018: private static final int MESSAGEBOX_UP_INTERVAL = 50;
019: private static final int MESSAGEBOX_DOWN_INTERVAL = 5;
020: private static final int MESSAGE_MAX = 30;
021: private static final String MESSAGE_ATTACK = "攻撃しました。";
022: */
023:
024: private static Command 退室/*exitCommand*/ =
new Command("退室", Command.BACK, 1);
025: private static Command 攻撃/*attackCommand*/ =
new Command("攻撃", Command.ITEM, 2);
026: private static Command 送信/*sendCommand*/ =
new Command("送信", Command.OK, 1);
027: private static Command キャンセル/*cancelCommand*/ =
new Command("キャンセル", Command.CANCEL, 2);
028: private TextBox A/*textBox*/;
029: private A/*Buddy*/ Code/*buddy*/;
030: private L/*MessageBox*/ StackMap/*messageBox*/;
031:
032: /**
033: * コンストラクタ
034: */
035: public M/*MessagingCanvas*/(A/*Buddy*/ buddy_) {
036: Code/*buddy*/ = buddy_;
037: StackMap/*messageBox*/ = Code/*buddy*/.L/*messageBox*/;
038: if(StackMap/*messageBox*/ == null){
039: StackMap/*messageBox*/ = new L/*MessageBox*/(
5/*MESSAGEBOX_LEFT_INTERVAL*/,50/*MESSAGEBOX_UP_INTERVAL*/,
040: getWidth()-5/*MESSAGEBOX_RIGHT_INTERVAL*/,
041: getHeight()-5/*MESSAGEBOX_DOWN_INTERVAL*/);
042: Code/*buddy*/.L/*messageBox*/ = StackMap/*messageBox*/;
043: }
044: addCommand(退室/*exitCommand*/);
045: addCommand(攻撃/*attackCommand*/);
046: setCommandListener(this);
047: }
048:
049: /**
050: * commandListener実装
051: */
052: public void commandAction(Command c, Displayable d){
053: if( c.equals(退室/*exitCommand*/) ){
054: Code/*buddy*/.L/*messageBox*/ = null;
055: I/*ImproveMIDlet*/.Code/*setCurrent*/(
I/*ImproveMIDlet*/.StackMap/*listCanvas*/);
056: } else if( c.equals(攻撃/*attackCommand*/) ){
057: //downsize 即値の利用
058: Z/*Task*/.Z/*getTask*/(5/*Task.TASK_SEND*/,new String[]{
059: Code/*buddy*/.StackMap/*etc*/[0]/*account*/,
060: String.valueOf(2/*Constants.MESSAGE_TYPE_ATTACK*/),
061: "攻撃しました。"/*MESSAGE_ATTACK*/
062: }).StackMap/*schedule*/(0);
063: } else if( c.equals(送信/*sendCommand*/) ){ //送信TextBox
064: //downsize 即値の利用
065: Z/*Task*/.Z/*getTask*/(5/*Task.TASK_SEND*/,new String[]{
066: Code/*buddy*/.StackMap/*etc*/[0]/*account*/,
067: String.valueOf(1/*Constants.MESSAGE_TYPE_NORMAL*/),
068: A/*textBox*/.getString()
069: }).StackMap/*schedule*/(0);
070: A/*textBox*/ = null;
071: I/*ImproveMIDlet*/.Code/*setCurrent*/(this);
072: } else if( c.equals(キャンセル/*cancelCommand*/) ){ //キャンセル
073: A/*textBox*/ = null;
074: I/*ImproveMIDlet*/.Code/*setCurrent*/(this);
075: }
076: }
077:
078: /**
079: * 描画
080: */
081: public void paint(Graphics g){
082: Z/*Task*//*Menu*/.StackMap/*draw3DRect*/(
g, 0, 18/*TICKER_HEIGHT*/+1, getWidth(), getHeight()-18/*TICKER_HEIGHT*/-1,
083: (153<<16) | (153<<8) | 255/*
LIST_BG_COLOR*/, 0x00EEEEFF, 0x00000080);
084:
085: I/*ticker*/.Code/*paint*/(g);
086: Code/*buddy*/.StackMap/*draw*/(g,getWidth(),18/*
TICKER_HEIGHT*/+6/*BUDDY_LOCATION_Y*/,false,true);
087: StackMap/*messageBox*/.I/*draw*/(g);
088: }
089:
090: /**
091: * キーハンドラ
092: */
093: protected void keyReleased(int keyCode){
094: try{
095: switch( getGameAction(keyCode) ){
096: case FIRE:
097: A/*textBox*/ = new TextBox(
"メッセージ送信","",30/*MESSAGE_MAX*/,TextField.ANY);
098: A/*textBox*/.addCommand(送信/*sendCommand*/);
099: A/*textBox*/.addCommand(キャンセル/*cancelCommand*/);
100: A/*textBox*/.setCommandListener(this);
101: I/*ImproveMIDlet*/.Code/*setCurrent*/(A/*textBox*/);
102: break;
103: case LEFT:
104: I/*ImproveMIDlet*/.Code/*setCurrent*/(
I/*ImproveMIDlet*/.StackMap/*listCanvas*/);
105: break;
106: default:
107: StackMap/*messageBox*/.A/*processKeyRelease*/(
getGameAction(keyCode),keyCode);
108: }
109:
110: repaint();
111: } catch(IllegalArgumentException ex){
112: //NOP
113: }
114: }
115: }