WAIT
プログラムを指定フレーム数停止
WAIT [frame]
パラメーター
frame:停止させるフレーム数。1フレームは1/60秒。省略時は1(1/60秒)
解説
WAITコマンド実行から、指定したフレーム数(画面を1回再描写するのが1フレーム)の間、プログラムを停止させます。
例えば「『ゲームオーバー』と表示させてBGMを流しながら、6秒間はボタンを受け付けない」という場合などに使用します。(サンプルコード参照)
1フレームは1/60秒、60フレームで1秒間停止します。
VSYNCは、前回のVSYNCコマンド実行時から指定時間が経過するまで停止します。
主に「画面の再描画待ち」に使用します。
例えば十時キーでキャラを移動させるプログラムの場合、内部的に座標が1ずつ動いていたとしても、
画面が描画されるまでに計算処理だけを高速に繰り返せば、画面上のキャラはいきなりワープしたようになってしまいます。
そのようにならないよう、最低でも1フレーム(画面再描写1回分)はプログラムを停止して待つ必要があります。
しかしここで「WAIT」を使うと、ループ処理時間1回分+WAITのフレーム分が停止する事になり、待ち時間が不安定になります。
「VSYNC」を使えば前回のVSYNCからの経過時間停止するので、毎回同じタイミングでプログラムが動きます。
※ループ処理1回に1フレーム以上の時間がかかると遅くなりますが、3DS+SmileBASICの性能上、通常はめったに起こりません。
WAIT と VSYNC の違い
WAITは、WAITコマンド実行のあとに指定フレーム分停止します。例えば「『ゲームオーバー』と表示させてBGMを流しながら、6秒間はボタンを受け付けない」という場合などに使用します。(サンプルコード参照)
1フレームは1/60秒、60フレームで1秒間停止します。
VSYNCは、前回のVSYNCコマンド実行時から指定時間が経過するまで停止します。
主に「画面の再描画待ち」に使用します。
例えば十時キーでキャラを移動させるプログラムの場合、内部的に座標が1ずつ動いていたとしても、
画面が描画されるまでに計算処理だけを高速に繰り返せば、画面上のキャラはいきなりワープしたようになってしまいます。
そのようにならないよう、最低でも1フレーム(画面再描写1回分)はプログラムを停止して待つ必要があります。
しかしここで「WAIT」を使うと、ループ処理時間1回分+WAITのフレーム分が停止する事になり、待ち時間が不安定になります。
「VSYNC」を使えば前回のVSYNCからの経過時間停止するので、毎回同じタイミングでプログラムが動きます。
※ループ処理1回に1フレーム以上の時間がかかると遅くなりますが、3DS+SmileBASICの性能上、通常はめったに起こりません。
サンプルコード
「ゲームオーバー」と表示し、音楽を流し、6秒間画面を止める
PRINT "ゲームオーバー"BGMPLAY 6 '音楽を鳴らすWAIT 360 '360フレーム(6秒)、プログラム停止(BGMは流れ続ける)BGMSTOP '6秒後にプログラム継続(BGMを止める)
参照
READ
DATAに書かれた内容で変数に値を一括代入する
DATA
READで読み取るためのデータを記述
RESTORE
READで読込むDATAの位置を指定
OPTION
プログラムの動作モードを設定
WAIT
プログラムを指定フレーム数停止
VSYNC
プログラムを指定フレーム間隔まで停止
'
プログラムの中にコメントを書く
REM
プログラムの中にコメントを書く
KEY
ファンクションキーの設定を上書/読込
DTREAD
日付/曜日を数値で取得
TMREAD
時刻を数値で取得
CHKLABEL
ラベル名が存在するか調べる
CHKCALL
ユーザー定義命令・関数に使われている名前か調べる
CHKVAR
変数に使われている名前か調べる
DIALOG
画面にダイアログを表示する
CLIPBOARD
クリップボードへの読み書き
DLCOPEN
カタログIPの利用開始を宣言