スクラッチパッドを利用しよう (3/6)
作成:2009-12-30 10:14
更新:2009-12-30 10:14
更新:2009-12-30 10:14
■ソースコードの作成
では、ソースコードを作成しましょう。SampleIapp.javaを開き、MainCanvasクラスを以下のように修正してください。
iアプリを実行したら、上下左右のキーで赤い枠を移動し、選択キーで表示を設定していきます。そして右ソフトキーを押してiアプリを終了させてください。終了時にデータをスクラッチパッドに保存します。もう一度iアプリを起動してみると、保存されたスクラッチパッドからデータを読み込み、最後に保存した状態に復帰して表示されます。
iアプリを実行したら、上下左右のキーで赤い枠を移動し、選択キーで表示を設定していきます。そして右ソフトキーを押してiアプリを終了させてください。終了時にデータをスクラッチパッドに保存します。もう一度iアプリを起動してみると、保存されたスクラッチパッドからデータを読み込み、最後に保存した状態に復帰して表示されます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※MainCanvasの修正 // import java.io.*; // import javax.microedition.io.Connector; // import com.nttdocomo.io.ConnectionException; class MainCanvas extends Canvas { private Image[] images; private static final int MAX_X = 5, MAX_Y = 5; private static final int IMG_W = 32, IMG_H = 32; private int x, y; private int[] data; private ImageMap map; MainCanvas() { this.setSoftLabel(Frame.SOFT_KEY_2, "EXIT"); data = new int[MAX_X * MAX_Y]; images = new Image[3]; try { MediaImage mi = MediaManager.getImage("resource:///image.gif"); mi.use(); images[0] = mi.getImage(); MediaImage mi1 = MediaManager.getImage("resource:///image2.gif"); mi1.use(); images[1] = mi1.getImage(); MediaImage mi2 = MediaManager.getImage("resource:///image3.gif"); mi2.use(); images[2] = mi2.getImage(); map = new ImageMap(IMG_W, IMG_H, MAX_X, MAX_Y, data, images); load(); } catch (ConnectionException e) { } } public void paint(Graphics g) { g.lock(); g.clearRect(0, 0, this.getWidth(), this.getHeight()); g.drawImageMap(map, 0, 0); g.setColor(Graphics.getColorOfName(Graphics.RED)); g.drawRect(IMG_W * x, IMG_H * y, IMG_W, IMG_H); g.unlock(true); } public void processEvent(int type, int param) { super.processEvent(type, param); switch (type) { case Display.KEY_PRESSED_EVENT: switch (param) { case Display.KEY_UP: y -= y == 0 ? 0 : 1; break; case Display.KEY_DOWN: y += y == MAX_Y - 1 ? 0 : 1; break; case Display.KEY_LEFT: x -= x == 0 ? 0 : 1; break; case Display.KEY_RIGHT: x += x == MAX_X - 1 ? 0 : 1; break; case Display.KEY_SELECT: data[x + y * MAX_X] = (data[x + y * MAX_X] + 1) % images.length; break; case Display.KEY_SOFT2: save(); IApplication.getCurrentApp().terminate(); break; } repaint(); } } // データの書き出し public void save() { OutputStream output = null; try { output = Connector.openOutputStream("scratchpad:///0;pos=0"); for (int i = 0; i < data.length; i++) output.write(data[i]); } catch (IOException e) { e.printStackTrace(); } finally { try { output.close(); } catch (IOException e) { e.printStackTrace(); } } } // データの読み込み public void load() { InputStream input = null; try { input = Connector.openInputStream("scratchpad:///0;pos=0"); for (int i = 0; i < data.length; i++) data[i] = input.read(); } catch (IOException e) { e.printStackTrace(); } finally { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } }
※関連コンテンツ