その他の基本的な操作について
"actions"の隣の"data"は何?
これは他言語で言うグローバル変数と呼ばれるもので、どのサブルーチンからも自由に参照・変更することができます。
数値や文字列のみならず、画像や音声やプレイリストや地図や…等色々なデータを扱うことができるので、変数というよりはオブジェクトと呼んだ方が正しいかもしれません。
この"data"に登録した変数の内容はプログラムを終了してもクリアされませんので、
セーブデータ的な使い方もできます。
逆に初期化が必要な変数は確実に"actions"のmainで初期化しておく必要があります。
登録した変数をサブルーチン内で使用するにはコマンドパネルの"data"を押してください。
じゃあその隣の"events"は?
actionsは関数やらサブルーチンみたいなものだと説明しましたが、eventsも実は同じようなものです。
actionsは他のサブルーチンから呼ばれて初めて実行されますが、eventsは端末の状態が変化した際に呼び出されます。
例えば端末を横にしたとか、端末を振ったとか、再生中の曲が変わったとかそういう条件をトリガーにすることができます。
eventsの中でもgameloopは特殊で、50ms(50ミリ秒=0.05秒)毎に自動的に呼び出される割り込み処理です。
基本的にはアプリ中で使用する設定やパラメータを"data"に登録し、"actions"のmainで初期化処理を行い、同じく"actions"に様々な処理のサブルーチン群を用意し、"events"で発生したトリガから"actions"のサブルーチンを呼び出すという使い方になります。
ローカル変数を使いたい
グローバルではない、そのサブルーチンの中だけ(正確にはスコープ)で使用できるというローカル変数ももちろん使用できますが、使用方法にちょっとクセがあります。
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
コマンドパネルの"abc"の左隣によく見ると":="と書かれたパネルがあります。
これを押して":="を選択してください。
するとresult :=というコマンドが入力されるので、変数に代入したい値を入力してください(resultの部分は他の文字になる場合もあります)。
前述の通りオブジェクトとしての要素を持っているので数値や文字列以外にも色々なデータを結びつけることができます。
値を入力したら、resultの部分を押して、パネルのrenameを押してください。
これで変数名を任意に付けることができます。
名前をつけたらハードキーのバックキーを押して戻ります。
画面上ではvar hoge := "abc"のような表記に変わっていますが、これがローカル変数の定義となり、このローカル変数が有効な範囲内(スコープ内)であればコマンドパネルに変数名が表示されます。
ローカル変数は"data"のグローバル変数と異なり、処理がそのサブルーチン(スコープ)から外れた時点で無効となり消去されます。
コマンドを修正したい
そのコマンドの行を押すとこのような画面になります。
ここでeditを選択すると修正できます。
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
途中に行を挿入したい
上の画面でeditではなく【+】を押すと挿入できます。
上の方の【+】は「この行の前に追加」で、下の方の【+】は「この行の後ろに追加」です。
追加の場合はif・for each・for・whileといった条件処理・反復処理のコマンドを入力することができます。
expressionで通常のコマンドパネルでの入力になります。
行をコピペしたい
これまた上の画面でcutを選択するとその行を切り取ることができます。
切り取らずにコピーしたい場合は右上のselect moreを押してcopyを選択してください。
貼り付けは上の画面で【+】を押してpasteです。
そこにpasteがない場合はexpressionでコマンドパネルを開くとどこかにpasteがあります。
コメント使える?
同じく上の画面で【+】を押して"//"を選択で入力できます。
"post to wall"のwallって?
DOS窓やデバッグウインドウのようなもので、画面表示方法としてはもっともシンプルなものです。
DOS窓等とは異なり、スクロール方向は逆で上が最新になり、文字だけではなく画像も出力することができます。
固定画面で任意の座標に文字や画像を表示するにはwallではなく、boardというフレームバッファのような仕組みを利用します。
full boardで表示が欠けてるような気がする
create full boardではその端末の画面サイズでboardが作成されますが、post to wallすると画面上部の通知領域の下に描画されてしまいます。
そのため見た目的には下が欠けて表示されることになります。
IS12Tでは35ピクセルはみ出ますので、full boardのサイズは480x765と考えてください。
full boardでタッチした座標がおかしい
IS12Tで調べたところ、full boardのタッチ領域は上0(通知領域も拾えるので実際には-18くらいまで)、下754、左14、右466となりました。
個体差もあるかと思いますが表示位置とタッチ位置を正確に一致させることは難しいようです。
ボタン等を表示してそこをタッチさせるような処理を行う場合、そのボタンよりも判定範囲は若干広めにしてください。
ちゃんと設定したのにスプライトが見えないんだけど?
spriteの原点は左上ではなく中央です。
例えば100x50サイズのspriteをboard左上に表示させたい場合はset pos(50,25)と設定してください。
マルチタッチしたい
色々試してみましたができないようです。
Microsoft Researchに要望を出しましょう。
端末上の画面じゃコマンドの詳細がわからないよ
公式リファレンスに載ってるイベントトリガが出てこない
"data"(グローバル変数)にboardまたはspriteを作成してください。
すると"events"で選択できるイベントの種類が増えます。
他の人が作ったアプリのソースを参考にしながら作りたいんだけど
海外のサイトで見つけたコードで入力できないコマンドがあるよ
最終更新:2011年11月01日 09:44