Roll Play My Life

= ryuji_026

Cocos2d-x v3.0ではC++11が使えてそのやりかたとか

コンテナとか

for(auto node : getChildren()) {
    log("Node tag = %d", node->getTag() );
}

auto nodeに順番に要素入れながらループ回す、foreachみたいなことできる。

ちなみに

getChildren()の戻り値はcocos2d::Vectorだからこういうのできる、for(auto hoge : fuga)のfugaにはstd::vectorがはいってもいい。右側にはなんかvector入れとく。

auto enemies = _enemyLayer->getChildren();    // Vector
enemies.reverse();
for (auto target : enemies) {
    enemy = (Enemy*)target;
    rectArr.push_back(enemy->getBoundingBox());
    }

cocos2d::Vectorはstd::vectorと違ってarr[2];とかできない、arr.at(2);とかする。

あと、cocos2d::Vectorのときつかう、std::vectorのときつかう。

ラムダ式とかいうやつ

auto opa = FadeOut::create(0.6);
auto sca = ScaleTo::create(0.6, 2.0, 2.0);
auto func = CallFunc::create([this](){    // なんでこうやって書くか知らない
    this->removeFromParentAndCleanup(true);
});
auto spa = Spawn::create(opa, sca, NULL);
auto seq = Sequence::create(spa, func, NULL);
runAction(seq);

アクションつくるとき便利、これしたあと消す、とかできる。ちなみにこれはcocos2d::Spriteが広がりながら消えるやつ。