Labelオブジェクトで作成した文字を動かしたり,一定時間経過した後消したりするには,新しくファイルを作成し,Labelクラスを継承します.
次の例では,PopupLabel というクラスを作成し,30フレーム経過後に自動的に消える処理を行っています.
PopupLabel
extends Label;//Labelクラスを継承
// ラベルに対する処理を書く
updateEx(30);//30フレーム待機
die();//消える
Main
new PopupLabel{template:"START",x:200,y:200};
次の例では,プレイヤーの位置と同じ位置に出現するPointLabel というクラスを作成しています.
PointLabel
extends Label;//Labelクラスを継承
// ラベルに対する処理を書く
for(i=0;i<30;i++) {//30フレーム上に移動
y--;
update();
}
die();//消える
Player
while(true) {
x=$touches[0].x;y=$touches[0].y;
if ($touches[0].touched==1) {
// タッチされると「100」と書かれたPointLabelを生成
// x,y : プレイヤーと同じ位置に出現させる
// layer: プレイヤーと同じレイヤーに出現させる※
new PointLabel{x,y,layer,template:"100"};
}
update();
}
Main
new Player{x:200,y:200};
※Labelオブジェクトはデフォルトでは$frontLayerに出現するため,スクロールしたときに出現位置がずれてしまいます.layerを指定することでプレイヤーと同じレイヤー($mainLayer)に出現させることができます.
なお,Labelオブジェクトのtemplateの機能($
で始まる部分を展開)を使用しないのであれば,通常のActorクラスのtext
に代入することでも同等の動作になります.この場合は上の※に書いたようなlayerの指定も不要です.