BREW プログラミング入門(3)
|
|
PFNNOTIFYについても調べてみますと、通知を受け取る関数は次のようなプロトタイプを持つ必要があることが分かります。
|
これを使えば図形に動きをつけられそうです。
でもちょっとまってください。ここで重要な問題が出てきます。タイマーで通知されるたびに図形を動かすとして、その図形の座標はどこに記憶しておけばよいのでしょうか。
BREWには、いままで述べてこなかった重要な制限事項があります。「BREWではグローバル変数は使えない」のです。また、C言語の静的変数 (static変数) も使うことはできません。これはBREWというシステムの構造に根ざす、避けられない制限です。
BREWプログラミングにC++を使う場合、静的メンバ変数を使うこともできません。
独自のアプレット構造体
ではどうやってグローバルなデータを記憶したらよいのでしょう。
BREWでは、グローバルなデータはアプレット構造体に格納することになっています。これまでアプレット構造体としてAEEAppletしか使用してきませんでしたが、アプレット構造体は開発者が任意に定義できるのです。
今回作成する図形移動アプレットでは、次のようにアプレット構造体を定義します。
|
このように、「アプレット構造体の先頭のメンバは必ずAEEApplet型にしないといけません」。この条件さえ満たしていれば、あとは自由にメンバ変数を加えることができます。
独自にアプレット構造体を定義した場合は、AEEClsCreateInstance()関数の実装を少し変更しなければなりません。
まず、アプレット構造体を作成する AEEClsCreateInstance()関数で、AEEApplet_New()関数を呼び出すとき、独自アプレット構造体のサイズを指定する必要があります。アプレット構造体に必要なメモリを確保する必要があるからです。
また通常は、AEEApplet_New()を呼び出した後で、アプレット構造体の初期化を行うことになるでしょう。
|
このコードのRandInt()は乱数を返す関数で、独自に定義した関数です。詳細はソースコードをダウンロードして確認してください。
このように、独自のアプレット構造体を定義すれば、イベント ハンドラに渡されるIApplet*引数はShapeApplet*に変換できます。
|
それでは、Shapeアプレットの残りのコードを示すことで、ソースコードを完成させましょう。
|
※今回の記事のソースコードは、ソフィア・クレイドル のサイトからダウンロードできます。
著者紹介 倉谷智尋:ソフィア・クレイドル研究開発部チーフサイエンティスト。ソフィア・クレイドルは、2002年2月京都市にて、無限の可能性を秘めたソフトウェア職人たちが楽しく集い、自ずと自己実現が達成される場になることを目指して創業。在籍スタッフの平均年齢は20代前半と若いが、その大半がプログラミング歴10年以上とそのプロフェッショナリティは極めて濃い集団である。 これまでにBREW用アプリケーションフレームワーク、ケータイJavaプログラム圧縮技術、ケータイJavaブラウザ技術、ケータイメッセンジャー技術などを総合的に研究開発し、「高品質な共通プラットフォーム」の実現を目指してきた。 ご感想、ご質問はこちら(zdnet-contact@s-cradle.com)まで。 |
[倉谷智尋, ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.
最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!
最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!