| 私はドラモンスターです。
↓イベントデータここから
Do If IsVarDefined(基準時間) = 0 Then 基準時間 = GetTime() EndIf Loop While ((KeyState(37) = 0) And (KeyState(38) = 0) And (KeyState(39) = 0) And (KeyState(40) = 0)) If GetTime() - 基準時間 > 1000 Then Talk システム 1秒経過しました。 End EndIf
↑イベントデータここまで
上記のように改変しました。Waitコマンドの書式4はどこにも使っていません。 KeyState関数を判定に使ったIf文は正常に実行されています。 しかし、GetTime関数を判定に使ったIf文はカーソル操作を行った後に実行されます。これは私が意図する動作ではありません。 そして、カーソル操作を行わないと無限ループに突入してしまいます。強制終了を余儀なくされてしまいます。 カーソル操作を行うことでそれは回避できるのですが、どうにかしてこれを回避したいです。
基準時間の取得は1回に限定しているので、無限ループになるのはおかしいと思うのですが、どうでしょう。 これは「0=0」という式を使った正常な強制終了を必要としない無限ループ内で使用している処理で、 「基準時間」という変数はその処理が1回実行されるごとに上記の処理を実行する前に削除しています。
|