Lab

Cocos2d-x:ボタンの作成(スプライト)

 Tag :  Published : 2014-1-15

Pocket

CCMenuItemSprite、CCMenuを使用します。
スプライトを使ったボタンを作成します。
> Ver3.x : 『ボタンの作成(スプライト)』はこちら

1. ボタンの作成(CCMenuItemSprite、CCMenu)

2つのスプライトを組み合わせてボタンを作成します。

一つ目は半透明(タップ前)、もう一つは不透明(タップ後)にしてみます。

HelloWorldScene.h

class HelloWorld : public cocos2d::CCLayer
{
public:
    virtual bool init();  
    static cocos2d::CCScene* scene();
    CREATE_FUNC(HelloWorld);
private:
    //コールバック用関数myCallbackの準備
    void myCallback(CCObject* pSender);
};
    
HelloWorldScene.cpp

bool HelloWorld::init()
{
    if(!CCLayer::init())return false;
    
    //画面サイズを取得
    CCSize s = CCDirector::sharedDirector()->getWinSize();
    
    //タップ前のスプライト
    CCSprite* pNormalSprite = CCSprite::create("1.png");
    pNormalSprite->setOpacity(100);

    //タップ時のスプライト
    CCSprite* pSelectedSprite = CCSprite::create("1.png");

    //メニューアイテムの作成
    CCMenuItemSprite* pBtnItem = CCMenuItemSprite::create(pNormalSprite, pSelectedSprite, this, menu_selector(HelloWorld::myCallback));
    
    //メニューの作成 pBtnの中にpBtnItemを入れる
    CCMenu* pBtn = CCMenu::create(pBtnItem, NULL);
    
    //pBtnを画面中央に配置
    pBtn->setPosition(ccp(s.width*.5, s.height*.5));
    this->addChild(pBtn);

    return true;
}
    

まだmyCallbackを用意していないので、この時点ではエラーが出ます。

2. タップ時のコールバックを作成

myCallbackを作成します。
タップすると”ボタンが押されました”とメッセージが出るようにします。

HelloWorldScene.cpp

void HelloWorld::myCallback(CCObject* pSender)
{
    CCLog("ボタンが押されました");
}
    

pageTop