boardとspriteのサンプル
概要
boardはフレームバッファのような役割をするメモリ上に作成される仮想画面です。
spriteはboardの上を自由に動き回ることのできる特殊な画像です。
小学校で使ったOHPをイメージするとわかりやすいかもしれません。
| OHPの投影スクリーン |
WindowsPhoneの画面 |
| 背景を描いた大きな透明シート |
board |
| 動かすキャラを描いた小さな透明シート |
sprite |
ここでは黄色いboardを表示してタップした場所にマゼンタのspriteを表示するというサンプルを作ってみます。
端末を振るとspriteが消えます。
spriteのset posで指定する座標の原点は左上ではなく中央です。
"//"で始まるコメント行は入力する必要ありません。
data
| 変数名 |
種別 |
初期値 |
説明 |
| b |
Board |
- |
board本体 |
| p |
Picture |
- |
spriteで使用する画像の入れ物 |
| s |
Sprite |
- |
sprite本体 |
| ss |
Sprite Set |
- |
spriteの集合体 |
今回はpは単純に塗り潰すだけですが、好きな画像を使用することもできます。
actions
初期化
- action main()
- // 全画面サイズのboardを作成
- data → b := media → create full board
- // boardの背景色を黄色に設定
- // ここでboardに絵を設定することもできますが今回は省略
- data → b → set background(colors → yellow)
- // sprite用に30x30サイズの画像を準備
- data → p := media → create picture(30,30)
- // 画像をマゼンタで塗り潰す
- // 同じくここで絵を設定することもできますが今回は省略
- data → p → fill rect(0,0,30,30,0,colors → magenta)
- // 画像の入れ物をboardから作成してspriteに画像をセット
- // コマンドはcreate pictureだけど実際に作成されるのはspriteオブジェクトです
- data → s := data → b → create picture(data → p)
- // boardに表示するsprite setを作成
- data → ss := data → b → create sprite set
- // sprite setに今回表示したいspriteを登録
- // ここで複数のspriteを登録して同時に表示させることができます
- var d := data → ss → add(s)
- // boardを表示
- data → b → post to wall
sprite表示処理
- action check_tap_pos()
- // タップされた座標x
- var x := data → b → touch current → x
- // タップされた座標y
- var y := data → b → touch current → y
- // spriteを表示する座標(画面ではなくboard上の位置)を設定
- data → s → set pos(x,y)
- // spriteの描画を有効に設定
- s → show
- // boardにspriteを反映
- data → b → evolve
- // boardの表示を更新
- data → b → update on wall
events
タップの判定
- event gameloop()
- // タップされたか?
- if data → b → touched then
- // sprite表示ルーチンを呼び出し
- code → check_tap_pos
- else
端末が振られた
- event shake()
- // spriteの描画を無効に設定
- s → hide
- // boardにspriteを反映
- data → b → evolve
- // boardの表示を更新
- data → b → update on wall
最終更新:2011年10月30日 05:42