私はC++とcocos2d-xにはかなり新しく、答えは非常にシンプルなものになるかもしれませんが、私の人生ではなぜそれが動作しているのかわかりませんこのような。意図したように今、私のコードは完璧に動作ブロック内で参照される場所によって異なるCCLayerのサイズ
bool PlayGame::init()
{
if (!Layer::init()) return false;
double startX = this->getBoundingBox().getMidX()/3;
double startY = this->getBoundingBox().size.height * 0.95;
Sprite* sprite = Sprite::create("sprite.png");
sprite->setPosition(startX, startY);
this->addChild(sprite);
return true;
}
、私は前かどうかを確認する行をstartX
とstartY
を定義した場合:
はHelloWorldScene.cpp
の関連スニペット、修正/簡易版ですCCLayer
は正しく初期化されており、左上隅にsomehwereの代わりに(0, 0)
を返します。私の推測では、if (!Layer::init())
の行の前には、PlayGame
のレイヤーが初期化されていないため、サイズは0
です。
しかし私の心配するところでは、その行は問題なしでレイヤーが初期化されているかどうかをチェックする責任があり、CCScene
の定義内で呼び出されるcreate()
メソッドによってトリガされます。だから私は、層のサイズはファンクションブロックのどこにでも初期化されているはずだと思った。
私はここで何が欠けていますか?