2011-08-12 39 views
2

我無法弄清楚如何在場景中正確定位一些使用縮放精靈創建的菜單按鈕。Cocos2d,CCMenuSprite,縮放和定位問題

如果我創建精靈,縮放它們並設置它們的位置,一切都會好的。

如果我創建精靈,縮放它們,設置它們的位置,然後使用它們來創建CCMenuItemSprite,它們全部左移和下移。

如果我克里特的精靈,使用它們來創建CCMenuItemSprite,縮放菜單項和設置菜單項的位置,他們都是右移和上移。

當然,所有這些設置都使用相同的比例因子和中心點座標。

我在想什麼?

謝謝!

編輯:求助!

我明白了!這一切都是由於菜單的座標系的工作原理以及菜單縮放時的反應。

我現在不知道,我正在採取一種非正確的方法來解決這個問題,這是非常可能的,或者如果所有系統都被認爲是棘手的。

我會深入研究它,儘快寫一點教程。再次

感謝:d

回答

0

我知道這是一個非常古老的問題,但我只是想分享什麼事我在這裏(我希望這是有幫助的)。我剛剛遇到了這個問題中描述的同樣的問題,而@mokagio上面說的問題是菜單的coodinate系統如何工作。

首先我用它創建了一個Sprite和一個MenuItemSprite,但是我無法正確定位它們。然後我意識到我應該根據MenuItemSprite進行所有的縮放和定位,而不是在Sprite中,一切正常!

我使用的代碼是:

CCPoint backButtonPosition; 
CCSprite *backButtonSprite = CCSprite::createWithSpriteFrameName("Back.png"); 
CCMenuItemSprite *backButton = CCMenuItemSprite::create(backButtonSprite, backButtonSprite, this, menu_selector(MyMenuClass::buttonPressedCallback)); 

// Do all the scaling and positioning using the CCMenuItemSprite and not the CCSprite 
backButton->setScale(0.5); 
backButtonPosition = ccp(backButton->boundingBox().size.width/2, screenSize.height - backButton->boundingBox().size.height/2); 

// Position the button, but first convert the world coordinates to the parent menu local coordinates 
backButton->setPosition(categorySelectMenu->convertToNodeSpace(backButtonPosition)); 
categorySelectMenu->addChild(backButton); 

而且,請注意,根據菜單的座標系,而不是世界座標系統設置按鈕位置是非常重要的。