COCOS道場DX
ホームに戻る
スポンサーリンク

タッチを処理する


今回は画面をタッチした時の処理の仕方を紹介したいと思います。例えばある場所をタッチした、画面を何秒間かタッチしたなども検知することをできます。
まずはタッチ処理を受け付けるために以下のコードをHelloWorld.cppのinit関数内に記述します。

//タッチ処理を受け付ける
auto listener = EventListenerTouchOneByOne::create();

//画面がタッチされた時に呼び出す関数を指定     
listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);

//画面から指が離れた時に呼び出される関数を指定
listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);

//タッチしながら移動している時に呼び出される関数を指定
listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved,this);

//イベント登録
auto dispatcher = Director::getInstance()->getEventDispatcher();
dispatcher->addEventListenerWithSceneGraphPriority(listener, this);

次に指定した関数を記述するためHelloWorld.hに以下のように追記します。
bool onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* event);
void onTouchEnded(cocos2d::Touch* touch, cocos2d::Event* event);
void onTouchMoved(cocos2d::Touch* touch, cocos2d::Event* event);

最後にHelloWorld.cppに関数の実装をします。
//タッチした時に呼び出される関数
bool HelloWorld::onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* event){
 
    return true;    
}

//タッチを離した時に呼び出される関数  
void HelloWorld::onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event){
     
}

//タッチしながら移動中に呼び出される関数
void HelloWorld::onTouchMoved(cocos2d::Touch* touch,cocos2d::Event* event) {
      
}


例えばタッチされた場所を確認したり、その座標になにかを表示したいときには、このように座標を取得します。
bool HelloWorld::onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* event){

    //位置を取得
    auto pos=touch->getLocation();
    
    //座標を表示
    CCLOG("x=%.f , y=%.f",pos.x,pos.y);

    return true;
    
}

スポンサーリンク
このエントリーをはてなブックマークに追加
前の章へ ホームに戻る 次の章へ