2011-08-12 5 views
2

スケールされたスプライトで作成されたいくつかのメニューボタンをシーン内に正しく配置する方法がわかりません。Cocos2d、CCMenuSprite、Scaling and Positioning Issue

スプライトを作成し、スケールし、位置を設定すると、すべてうまく行きます。

スプライトを作成する場合は、スプライトをスケーリングし、位置を設定してから、それらを使用してCCMenuItemSpriteを作成します。

スプライトをクレリットにして、それらを使用してCCMenuItemSpriteを作成し、メニュー項目を拡大縮小し、メニュー項目の位置を設定します。

これらの設定はすべて同じスケールファクタと中心点座標で行われます。

私は何が欠けていますか?

ありがとうございます!

EDIT:SOLVED !!

私はそれを理解しました!それは、メニューの座標系がどのように機能し、メニューが拡大縮小されたときにどのように反応するかが原因でした。

私は今、私が問題に対処していない、非常に可能な、またはすべてのシステムがどのように考えられているかに厄介なことがあるかどうかわかりません。

私は少しチュートリアルを書いてそれを掘り下げます。再び

ありがとう:D

答えて

0

私は、これは非常に古い質問ですけど、私はちょうど(私はそれが有用であると思います)私はここに何が起こったのか共有したいと思いました。私はちょうどこの問題で説明された同じ問題を持っていました。そして、@mokagioはメニューのコーディネイトシステムがどのように機能するかという問題の上に述べました。

まず、SpriteとMenuItemSpriteを作成しましたが、正しく配置することはできませんでした。それから、私はMenuItemSpriteに基づいてすべてのスケーリングと位置付けを行うべきであり、スプライトではないことが分かりました。

私が使用したコードをした

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); 

また、座標系と世界に座標系がないメニューに従ってボタンの位置を設定することが重要であることに注意してください。