押した瞬間(Key Press)や離した瞬間(Key Release)はこういう場合には向いていない。
キーイベントを使うのなら、押している間(Keyboard)を使うべき。
(自分はBeginStepでキー判定を処理しているが。)

そして、キーが押されていれば動き、押されていなければ動かないとする。


<Begin Step>
// キーのフラグ
up = 0;
down = 0;
left = 0;
right = 0;

<Keyboard - UP>
up = 1; // キーが押されていたらフラグを書き換える

<Keyboard - DOWN>
(以下略)