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)
//{
//}