Cocos2d-x v3.x tutorial を試す (14) … Multi Touch

Cocos2d-x v3.2 マルチタッチイベントのチュートリアル
… チュートリアルもいよいよ佳境… なんとか週末には… ^^;

とりあえず試してがってん ^^;

 


Cocos2d-x v3 C++ Tutorial 39 – Setting Up Multi Touch Events
https://www.youtube.com/watch?v=b3d6Dbx1HNM

Cocos2d x v3 C++ Tutorial 40 – Touches Began Using onTouchesBegan
https://www.youtube.com/watch?v=PQyVhA3kAnk

Cocos2d-x v3 C++ Tutorial 41 – Touches Moved Using onTouchesMoved
https://www.youtube.com/watch?v=bv8QUf8JvdQ

Cocos2d-x v3 C++ Tutorial 42 – Touches Ended Using onTouchesEnded
https://www.youtube.com/watch?v=xBCJKkqqrmE


 

むむむ…
マルチタップの詳細は…無しか…
cocos2d_tests の MultiTouchTest …見てみたけど…コピれないだと…!
エラーが… math, rendererフォルダ 見たけど…コレはヤバい…

むむむ…
そのあたりは…とりあえず…後日… ^^;

個人的には、 for (auto …){ … } が強烈でした ^^

 

シングルタップのように、まずヘッダーにオーバーライドメソッドを定義して、

    virtual void onTouchesBegan(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event *unused_event);
    virtual void onTouchesMoved(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event *unused_event);
    virtual void onTouchesEnded(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event *unused_event);
    //virtual void onTouchesCancelled(const std::vector<cocos2d::Touch*>&touches, cocos2d::Event *unused_event);

 

initで イベントリスナーを作成して、

    //マルチタップ
    {
        auto listener = EventListenerTouchAllAtOnce::create();

        listener->onTouchesBegan = CC_CALLBACK_2(HelloWorld::onTouchesBegan, this);
        listener->onTouchesMoved = CC_CALLBACK_2(HelloWorld::onTouchesMoved, this);
        listener->onTouchesEnded = CC_CALLBACK_2(HelloWorld::onTouchesEnded, this);

        _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
    }

 

イベント処理を実装みたいな…

void HelloWorld::onTouchesBegan(const std::vector<Touch*>& touches, Event *event)
{
    CCLOG("%s", __PRETTY_FUNCTION__);

//    std::vector<Touch *>::const_iterator iterator = touches.begin();
//    while (iterator != touches.end())
//    {
//        Touch * touch = (Touch *)(*iterator);
//
//        auto location = touch->getLocation();
//        CCLOG("%s touch:%f, %f", __PRETTY_FUNCTION__, location.x, location.y);
//
//        iterator++;
//    }

    for (auto &item: touches)
    {
        auto touch = item;
        auto location = touch->getLocation();

        CCLOG("%s touch[%d] %f, %f", __PRETTY_FUNCTION__, touch->getID(), location.x, location.y);
    }
}

void HelloWorld::onTouchesMoved(const std::vector<Touch*>& touches, Event *event)
{
    CCLOG("%s", __PRETTY_FUNCTION__);

    for (auto &item: touches)
    {
        auto touch = item;
        auto location = touch->getLocation();

        CCLOG("%s touch[%d] %f, %f", __PRETTY_FUNCTION__, touch->getID(), location.x, location.y);
    }
}

void HelloWorld::onTouchesEnded(const std::vector<Touch*>& touches, Event *event)
{
    CCLOG("%s", __PRETTY_FUNCTION__);

    for (auto &item: touches)
    {
        auto touch = item;
        auto location = item->getLocation();

        CCLOG("%s touch[%d] %f, %f", __PRETTY_FUNCTION__, touch->getID(), location.x, location.y);
    }
}

//void HelloWorld::onTouchesCancelled(const std::vector<Touch*>&touches, Event *event)
//{
//}


Add a Comment

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