【cocos2dx】MenuItemクラスを改造して、ボタンに触った時にアクションを実行する方法

【cocos2dx】MenuItemクラスを改造して、ボタンに触った時にアクションを実行する方法
   

cocos2dxにあるMenuクラスは、簡単にボタンが実装できます。
通常は、このボタンを離した時にアクションが実行されます。
これでも十分なのですが、ボタンを触った時に何かしらのアクションを実行したと思い、実装をしてみました。

ボタンに触れた時にアクションを起こす

これは、前日利用方法を知った「コールバック」を利用します。
「コールバック」を利用すれば、簡単に実装できました。



MenuItemクラスを改造する

今回は直接MenuItemクラスをいじりましたが、本当なら専用のクラスを別途作った方が良いと思います。
ですので、コードを参考にしてください。
//MenuItem.h

public:
   void setTouchMenuCallback( const std::function<void(cocos2d::Ref*)> &callback );


protected:
    std::function<void(Ref*)>  m_callback;

//MenuItem.cpp
void MenuItem::setTouchMenuCallback(const std::function<void (cocos2d::Ref *)> &callback)
{
    m_callback = callback;
}


void MenuItem::selected()
{
    
    //コールバックに連絡
    if (m_callback) m_callback(this);
    
    _selected = true;
}


上記のように、ボタンが選択(selected)された時にコールバックを送るよう実装をします。

利用する

実際に利用する場合は、Menuを作成する時にコールバックを受け取る関数を実装します。
    
menuItem1->setTouchMenuCallback([](Ref *sender){
        
        
     //ボタンに触れた時の処理を記載する        
        
});


これで完了です。


Oculus Riftでオレの嫁と会える本 UnityとMMDモデルで作る初めてのバーチャルリアリティOculus Riftでオレの嫁と会える本 UnityとMMDモデルで作る初めてのバーチャルリアリティ
桜花一門,ゆーじ

翔泳社 2014-12-16
売り上げランキング : 1445

Amazonで詳しく見る

Related Posts Plugin for WordPress, Blogger...