やりたいこと
Phaser3でゲームを作成した際に、上下スペースキーをキーを押下したときにページが意図せずにスクロールしてしまうことがあります。
(ローカル環境でフィットするようにスケールするように設定していると気が付きにくいのですが、サーバ上にアップロードした際に広告などの影響で顕在化することがあります。)
ここでは意図したスクロールを止めます。
実装
以下のコードを上下スペースキーを押下する必要のあるシーンに追加します。
create()で呼べば問題ありません。
this.input.keyboard.on('keydown-DOWN', event => {
event.preventDefault();
});
this.input.keyboard.on('keydown-UP', event => {
event.preventDefault();
});
this.input.keyboard.on('keydown-SPACE', event => {
event.preventDefault();
});
またon()では複数の処理が追加できるので、上下スペースに対してほかの処理をon()で登録していても、処理をマージする必要はなく上記のコードを呼べば問題ありません。
似たイベントにkeyup-XXXXがありますが、ページのスクロールはkeydown-XXXXのイベントで行われます。
結果
Phaser3で上下スペースキーをキーを押下したときにページがスクロールするのを抑制することができました。
コメント