連載
» 2004年11月15日 22時22分 公開

90Xi専用ゲームiアプリ開発講座:第5回  スクラッチパッドへのデータ保存とダウンロードファイルの処理 (1/4)

900i専用のトレーディングカードゲームを開発するため、今回は携帯のスクラッチパッドを利用したデータの保存と、効果的なデータのダウンロード方法を紹介する。

[澤橋辰典・武上将樹,ITmedia]

  • 第8回 90xiアプリのこれから
  • 第7回 ネットワークiアプリのためのサーバサイド活用(2)
  • 第6回 ネットワークiアプリのためのサーバサイド活用(1)
  • 第5回  スクラッチパッドへのデータ保存とダウンロードファイルの処理
  • 第4回 カメラ機能を使ってカードを作ろう
  • 第3回 簡単なゲーム作成の流れを身に付ける
  • 第2回 カードゲームをつくってみよう
  • 第1回 90xiの時代に何を作るか
  •  前回はカメラオブジェクトを利用して撮影した写真をアプリに組み込み、その画像を解析して、オリジナルのカードを生成する方法について解説した。

     今回はゲーム作りに必須となる、携帯電話の記憶領域(スクラッチパッド)を利用してデータの読み書きをする処理と、通信によってネットワーク上から画像をダウンロードする処理について解説する。

    スクラッチパッドの使い方

     携帯電話には、データを保存しておくための領域が存在する。この保存領域は「スクラッチパッド」と呼ばれ、アプリケーション内で利用するためのデータをこの領域に保持することで、データの読み込みや書き込みが行える。例えば、ネットワーク上から画像や音楽をダウンロードして保存しておけば、次にそのデータを利用しようとした時に、通信費や通信にかかる時間を気にすることなくデータを使用できるのだ。

     スクラッチパッドを使用するには、ストリームを開く際のロケーションに以下の文字列を指定する。

    "scratchpad:///0;pos=0"

     最初の数値はスクラッチパッドの番号(通常は0)を指定して、次の数値でスクラッチパッドの先頭から何バイト目になるのかを指定する。バイト形式のデータを読み込むにはInputStream、書き込むにはOutputStreamを用いる。読み込みのストリームを作るには以下のように記述する。

    InputStream is = Connector.openInputStream("scratchpad:///0;pos=0");

     ここで作成したis(InputStream)に対して、read()を実行すると、スクラッチパッドの先頭から1バイトだけ読み込むことができる(戻り値は0〜255の範囲をとるint型の数値)。続けて使用すると次のバイトを読み込む。この際に、使わなくなったストリームはclose()で閉じておかなければならない。255を超えるint型の数値を読み書きする場合は、DataInputStream/DataOutputStreamを用いれば便利である。以下はスクラッチパッドの先頭200バイト目からintデータを読み込む例である。

    int x;
    try {
      DataInputStream dis 
        = Connector.openDataInputStream("scratchpad:///0;pos=200");
      x = dis.readInt();
      dis.close();
    } catch (Exception e) {}

     スクラッチパッドを使用する際に忘れてはならないのが、アプリの設定ファイル(JAMファイル/ADFファイル)の変更である。エミュレータ上部にある「ADF設定」と書かれたボタンを押すことで、JAMファイルを編集できる。ファイルの編集に慣れていれば、プロジェクトフォルダ配下のappフォルダに格納されているJAMファイルを直接編集することも可能だ。設定ファイルのSPSizeの項目に400kByteまでの整数値(〜409600)を指定することで、スクラッチパッドをそのサイズまで使用できるようになる。

           1|2|3|4 次のページへ

    Copyright © ITmedia, Inc. All Rights Reserved.

    この記事が気に入ったら
    ITmedia Mobile に「いいね!」しよう