子スプライトの数(存在しているか)を調べる::cocos2d-x v3.1.1

getChildrenCount()を使います。
同時にスプライトを複数(一定数以上)出したくない時などに。

タップした所にスプライトが表示され、中心まで移動した後消えます。
ただし、前のスプライトが消えないうちは、新しいスプライトが生成されないようにしています。
bool HelloWorld::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    
    //touchListner
    auto listner = EventListenerTouchOneByOne::create();
    listner->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan,this);
    this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listner, this);
    
    return true;
};
bool HelloWorld::onTouchBegan(Touch *touch, Event *event)
{
    //タッチ位置取得
    auto location = touch->getLocation();

    //画面サイズ取得
    auto visibleSize = Director::getInstance()->getVisibleSize();

    //中心に移動
    auto centerPoint = Point(visibleSize.width/2,visibleSize.height/2);
    auto moveToCenter = MoveTo::create(0.5f, centerPoint);

    //this以下のスプライトの数を調べる
    auto count = this->getChildrenCount();

    //0個だったら実行
    if(count == 0){
        auto homuhomu = Sprite::create("homuhomu.png");
        homuhomu->setPosition(location);
        this->addChild(homuhomu);
        
        //スプライトを消す
        auto removeSprite = CallFunc::create([this,homuhomu](){
            this->removeChild(homuhomu);
        });
        
        auto sequence = Sequence::create(moveToCenter,removeSprite, NULL);
        homuhomu->runAction(sequence);
    }
    return true;
}

コメント

このブログの人気の投稿

2次元配列のコピー::JavaScript

iframeの利点と欠点

Cocos2d-x 3.4でandroid向けにビルドする