2019 ソフトウェア設計及び演習用の班Wiki
19::gr04::メモ
Enter押しっぱ問題解決策?
画面遷移時に使う関数を
game_start(game);
から
var waitAmin = function(){ game_start(game); } setTimeout(waitAmin, 1000);
に書き換えて待機時間を発生させてみた.
これでEnterを少し長く押していても大丈夫になるが,他の操作は受け付けてしまうため,改善策求む.
解決策・改
enterframeを使う関数の前にストップ用の変数 stop = 0(名前は何でもいい)を宣言する.
ループ条件を stop == 0 にし,setTimeoutの前にstop = 1を代入してみた.
そうすると操作を受け付けない待機時間を発生させることができる.
動作確認はしたけど,他の画面で使って何かエラー吐いたらごめんね.
- 例
var stop = 0; nyanko.on('enterframe', function(e){ if(stop == 0){ if(game.input.enter){ stop = 1; var waitAmin = function(){ game_start(game); } setTimeout(waitAmin, 1000); } // ほかの動作は省略 });
by優菜子
解決策・改・改
setTimeoutなんて面倒な関数を使う必要はなかった.
要は人間がキーを離す前にenterframe内でEnterの入力を感知してしまうからダメなのだ.
var timer = 0; nyanko.on('enterframe', function(e){ timer++; if(timer > 10){ // ここに入る数字は適宜調整 if(game.input.enter){ timer = 0; game_start(game); } });
このように書くことで,最初にこの関数が呼び出されてから10フレーム以内にgame_start(game)を実行することはなくなるのである.
待機時間はテキトーなので(おそらく10フレームじゃ長い)どのくらい待機時間を作ればいいかは各自検証してほしい.
by優菜子
十字キー操作
game_startScene.on('upbuttondown', function(ev){ // 動作は省略 }
のように,game.inputでキー操作を検知するのではなく,buttondownをシーンに発生するイベントとしてキー操作を検知すれば,おしっぱにしても変に反応することはなさそう.(長押しもbuttonup系で対応できそうだが,時間がなさすぎるので省略)
この方法は十字キーには使えるが,EnterやBackSpaceには使えないっぽい.
最終更新日:2019/07/19 17:59:03