子スプライトの数(存在しているか)を調べる::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; }
コメント