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