2023-07-15
以前 キーボードイベントではKeybaordEvents
mixin を使ってキーボード入力を自分で処理しましたが、
単純にキーボード入力を処理するだけならKeyboardListenerComponent
を使うと簡単にできます。
ゲームクラスに HasKeyboardHandlerComponents
mixin を指定します。
class KeyboardListenerGame extends FlameGame with HasKeyboardHandlerComponents {
次にKeyboardListenerComponent
を使ってキーボード入力を処理します。
行数は多いですが、KeyDown/KeyUp 時の処理を単純に指定するだけなので簡単です。
await add(
KeyboardListenerComponent(
keyDown: {
LogicalKeyboardKey.arrowDown: (keysPressed) {
_vy = _speed;
return true;
},
LogicalKeyboardKey.arrowUp: (keysPressed) {
_vy = -_speed;
return true;
},
LogicalKeyboardKey.arrowRight: (keysPressed) {
_vx = _speed;
return true;
},
LogicalKeyboardKey.arrowLeft: (keysPressed) {
_vx = -_speed;
return true;
},
},
keyUp: {
LogicalKeyboardKey.arrowDown: (keysPressed) {
_vy = 0;
return true;
},
LogicalKeyboardKey.arrowUp: (keysPressed) {
_vy = 0;
return true;
},
LogicalKeyboardKey.arrowRight: (keysPressed) {
_vx = 0;
return true;
},
LogicalKeyboardKey.arrowLeft: (keysPressed) {
_vx = 0;
return true;
},
},
),
);
これでキーボードイベントと同じようにキーボード入力を処理できるようになりました。
© 2023 tnantoka