我對C++和cocos2d-x很新穎,所以答案可能非常簡單,但對於我的生活,我無法弄清楚爲什麼它的行爲喜歡這個。不同的CCLayer大小取決於它在塊內引用的位置
下面是相關的片斷,修改/簡化HelloWorldScene.cpp
版本:
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
來檢查,如果前行CCLayer
已經正確初始化,他們返回(0, 0)
,而不是左上角的somehwere。我的猜測是,在行if (!Layer::init())
之前,PlayGame
圖層尚未初始化,因此其大小爲0
。
但是就我而言,該行只負責檢查圖層是否已經初始化,沒有問題,並且實際的初始化由在父級CCScene
的定義中調用的create()
方法觸發。所以我認爲圖層的大小應該已經在函數塊內的任何地方初始化了。
我在這裏錯過了什麼?