最後のキーボードイベントの実行が完了する前に、キーを押したときにキーボードイベントに問題があります。ここで私はonKeyPressedイベントがあります。現在のキーボードイベントが終了するまでキーボードイベントのキャプチャを停止するにはどうすればよいですか?
keyBoardListener->onKeyPressed =
[&](cocos2d::EventKeyboard::KeyCode keycode, Event* event){
switch (keycode)
case cocos2d::EventKeyboard::KeyCode::KEY_RIGHT_ARROW:
// Move 900 pixel to the Right in 3s
case cocos2d::EventKeyboard::KeyCode::KEY_UP_ARROW:
// Jump.
};
は私のキャラクターは、私はKEY_RIGHT_ARROWを押すと、私のchracterは3秒右に900ピクセルの移動を開始位置xに今あると言うことができます。ただし、の後に1秒間、がKEY_UP_ARROWを押します。今私は私のキャラクターはゴール(x + 900)に到達するまで移動してジャンプしますが、実際には私はKEY_UP_ARROWを押したときに彼がどこにいたかをジャンプします。
2つの解決策は、現在のイベントが終了するか、別の場所に保存され、先入れ先出しのシーケンスで後で実行されるまで、アプリが新しいキーボードイベントをキャプチャするのをどうにかする必要があるということです。だから:
1 /それはそれに対処するための良い方法ですか?そうなら、それをどうやって行うのですか?
2 /他に解決策はありますか?
ご協力いただきありがとうございます。
更新:私は新しいキーボードイベントを防ぐためにフラグを設定しようとしましたが、それはまだ同じ:
int flag = 0;
keyBoardListener->onKeyPressed =
[&](cocos2d::EventKeyboard::KeyCode keycode, Event* event){
if(flag==0)
{
flag++;
switch (keycode)
case cocos2d::EventKeyboard::KeyCode::KEY_RIGHT_ARROW:
// Move 900 pixel to the Right in 3s
case cocos2d::EventKeyboard::KeyCode::KEY_UP_ARROW:
// Jump.
flag--;
}
};
問題がどこにあるのかわかりません。右矢印を押したときにアニメーションを実行している場合は、ベクトル内のすべてのクリックを覚えておくことができます。偶然にあなたの行動が、例えばキャラクターを右に動かしている場合、キャラクターが正しく動作しているかどうかを知るフラグを設定するだけで、アップデート機能でビット(速度*デルタ)で移動できます。 – Makalele
@Makaleleひどい説明を申し訳ありません。私の問題は、私のキャラクターが現在位置xにあると言うことです。私がKEY_RIGHT_ARROWを押すと、私のキャラクターは900ピクセルを3秒で右に動かし始めます。しかし、1秒後にKEY_UP_ARROWを押します。今度は私のキャラクターがゴールに達するまで(x + 900.f)ジャンプしますが、実際にはKEY_UP_ARROWを押すと元の位置にジャンプします。 –