Cocos2d-x v3.x tutorial を試す (13) … Single Touch

Cocos2d-x v3.2 タッチイベントのチュートリアル
… v2.x系と全然違う… ^^;
とりあえず試してみました。

 


Cocos2d-x v3 C++ Tutorial 35 – Setting Up Single Touch Events
https://www.youtube.com/watch?v=9MU13k3f_jI

Cocos2d-x v3 C++ Tutorial 36 – Touch Began Using onTouchBegan
https://www.youtube.com/watch?v=QiXNP2X-kIk

Cocos2d-x v3 C++ Tutorial 37 – Touch Moved Using onTouchMoved
https://www.youtube.com/watch?v=Vgtu5SJUnrU

Cocos2d-x v3 C++ Tutorial 38 – Touch Ended Using onTouchEnded
https://www.youtube.com/watch?v=VDrzhYNTpjU


 

まずは ヘッダに関数の定義を …

    virtual bool onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event);
    virtual void onTouchMoved(cocos2d::Touch *touch, cocos2d::Event *event);
    virtual void onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event);
    //virtual void onTouchCancelled(cocos2d::Touch *touch, cocos2d::Event *event);

親の Layer.h から定義をコピーしたらいいかなーと ^^

 
cppファイルの方にメソッドを実装

bool HelloWorld::onTouchBegan(Touch *touch, Event *event)
{
    CCLOG("%s x:%f, y:%f", __PRETTY_FUNCTION__,
          touch->getLocation().x,
          touch->getLocation().y);

    //trueを返さないと Moved, Ended が来ないよ ^^;
    return true;
}

void HelloWorld::onTouchMoved(Touch *touch, Event *event)
{
    CCLOG("%s x:%f, y:%f", __PRETTY_FUNCTION__,
          touch->getLocation().x,
          touch->getLocation().y);
}

void HelloWorld::onTouchEnded(Touch *touch, Event *event)
{
    CCLOG("%s x:%f, y:%f", __PRETTY_FUNCTION__,
          touch->getLocation().x,
          touch->getLocation().y);
}

 
最後になっちゃったけど、イベントリスナーの登録…
ここが一番変わった感じかなー、自分はとりあえず覚えるように打つしか… ^^;

    //タッチイベント
    {
        auto listener = EventListenerTouchOneByOne::create();

        listener->setSwallowTouches(true);

        listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);
        listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved, this);
        listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);

        _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
    }

 


うーん、この setSwallowTouches … いったい何ぞや… ^^; と、ググってみると、
これをtrueにしておくと、そのイベントリスナーが通知を受け取った時点で下位のリスナーには通知されなくなるみたい…

この辺は試し試しで ^^;


Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です