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