Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> Cocos2d-x -> 【Cocos2d-x】キーボードのイベント判定処理(Windows、Mac対応)

【Cocos2d-x】キーボードのイベント判定処理(Windows、Mac対応)

Cocos2d-xで、WindowsやMacアプリを開発する時に便利な、キーベードイベントの実装方法です。

ざっくりと、下記のような例で実装できます。
要は、onKeyPressedで、キーが押された時の判定、onKeyReleasedでキーが離れた時の判定を行います。

そのため、例えば、十字キーを押している間、ずっと主人公が自動する、とか、Zボタンを押している間、弾を連射、する、などの、長押し処理については、onKeyPressedが呼ばれた時に、フラグ用の変数をONにして,onKeyReleasedの時にフラグをOFFにすればOKです。

その後は、あらかじめ設定しておいたタイマーで、ループ処理をしているゲームメイン部分で、フラグがONの時だけ移動や弾撃ちの処理を行うようにすれば良い、という事になります。

auto listener = EventListenerKeyboard::create();
listener->onKeyPressed = [this](cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event* event)->bool{
// 下ボタンを押したらフラグをONにする例
if(keyCode == cocos2d::EventKeyboard::KeyCode::KEY_DOWN_ARROW){
keydown_flg = 1;
}
return true;
};
listener->onKeyReleased = [this](cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event* event)->bool{
// ESCボタンでゲームを終了させる例
if(keyCode == cocos2d::EventKeyboard::KeyCode::KEY_ESCAPE){
Director::getInstance()->end();
}
// 下ボタンを離したらフラグをOFFにする例
if(keyCode == cocos2d::EventKeyboard::KeyCode::KEY_DOWN_ARROW){
keydown_flg = 0;
}
return true;
};
this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);

この記事の最終更新日:2017/12/05
最初に記事を書いた日:2017/12/05

この記事をシェアする

このエントリーをはてなブックマークに追加

関連記事

Meteoric Streamについて

管理人

Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> Cocos2d-x -> 【Cocos2d-x】キーボードのイベント判定処理(Windows、Mac対応)