U8's AppLabo

swift,cocos2d-x,Unityを使ったiOSアプリ作成の備忘録

未分類

cocos2d-x でマインスイーパーを作ってみた 〜その3

投稿日:2016年10月6日 更新日:

それでは今回はパネルにタッチすると色が変わる様にします。

今回はパネルをPanelクラスとして用意する。

HelloWorld.hとHelloWorld.cppに以下のコードを追加する。

class Panel:public cocos2d::Sprite{
protected:
    
public:
    virtual bool init();
    void onEnter() override;
    
    void touchEvent();
    
    virtual bool onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* event);
    virtual void onTouchEnded(cocos2d::Touch* touch,cocos2d::Event* event);

    CREATE_FUNC(Panel);
    
};

bool Panel::init(){
  
    if (!Sprite::init()) {
        return false;
    }
    
   //イベントリスナーを作成
    auto _listener = EventListenerTouchOneByOne::create();

    _listener->setSwallowTouches(false);
    
    _listener->onTouchBegan = CC_CALLBACK_2(Panel::onTouchBegan, this);
    _listener->onTouchEnded = CC_CALLBACK_2(Panel::onTouchEnded, this);

    //イベントリスナーを追加
    _eventDispatcher->addEventListenerWithSceneGraphPriority(_listener, this);

    return true; 
}

void Panel::onEnter(){
    
    Sprite::onEnter();

    //Panelの大きさ色を決定
    Rect _rect = Rect(0,0,80,80);
    this->setTextureRect(_rect);
    this->setColor(Color3B::WHITE);
     
}

bool Panel::onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event){
    
    auto _p = touch->getLocation();

    //タッチの座標がパネル上にあるかを調べる
    if (this->getBoundingBox().containsPoint(_p)) {
        
        return true;
    }
    
    return false;
    
}

void Panel::onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event){
    
    this->touchEvent();
    
}

void Panel::touchEvent(){

    //Panelの色を赤に変更
    this->setColor(Color3B::RED);

}

次にHelloWorld::onEnter()内にあるauto _panel を以下のように置き換える

auto _panel = Sprite::create();
        ↓
auto _panel = Panel::create();

実行して適当なパネルをタッチすると…

sono-4

見事にパネルの色がかわりました^^

フッターアド




フッターアド




-未分類

執筆者:

関連記事

no image

【cocos2d-x】 シングルトン

アプリを作成していると、複数のSceneやClassから一つのデータを参照したくなることが 多々あります。そんな時はシングルトンオブジェクトを作っておくととても便利です。 class MainData …

cocos2d-x でマインスイーパーを作ってみた 〜その2

今日は画面上に白いパネル(width:80,height:80)を9×9個並べてみる。 void HelloWorld::onEnter(){ Layer::onEnter(); int _cellL …

no image

文字列がNULLかどうか調べたい cocos2d-x ( C++ )

文字列strが空かどうか調べて処理を実行したい   if ( str == “” ){ hoge() } ではうまくいかない。 以下の様に文字列の文字数を調べることで判定すると上手く行く if( !s …

cocos2d-x でマインスイーパーを作ってみた 〜その1〜

cocos2d-xでマインスイーパを作成したので覚書き 完成画面はコレ   それではまずcocos2d-xで新規のプロジェクトを作成。 画面はiPhone7に合わせるので750×1334に固 …

no image

「俺の部屋?からの脱出」プライバシーポリシー

基本方針
 「俺の部屋?からの脱出」は、当アプリを通じて、お客様の個人情報をご提供いただかないことを約束します。 データ通信の使用目的 
当アプリにおけるデータ通信は、広告の表示をするのみに限られ、個 …