2013-08-17 18 views
0

我有一個附加到圖層的菜單。在菜單中4個項目垂直對齊。我decleare這樣的菜單(警告:這是使用JavaScript的Cocos2D-HTML5,框架是一樣的每iphone!):在程序中的某個時刻對於CCMenu中MenuItems的convertToWorldSpace的奇怪行爲

 menuHeight = sumofMenuItemsHeight(CategoryMiniSpriteArray); 
     var newMenu = cc.Menu.create(CategoryMiniSpriteArray); 

     newMenu.setAnchorPoint(cc.PointMake(1,1)); 
     newMenu.setPosition(cc.PointMake( 
          ScreenSize.width, ScreenSize.height - (menuHeight/2) 
          )); 
     newMenu.alignItemsVertically(); 

之後,我想獲得絕對菜單項相對於屏幕的座標。 我執行此代碼:

var itemPosition = miniSprite.convertToWorldSpace(miniSprite.getPosition()); 

我得到一個很奇怪的行爲。返回的X座標完全匹配真實位置。如果我嘗試這樣放置:

sprite.setPosition(itemPosition); 

對該座標X的另一個精靈與菜單項完全對齊。 問題是Y.對於每個MenuItem我得到一個移位的Y,但這不是全部。菜單項之間的Y差異是菜單項高度的2倍。所以不僅移動Y而且甚至在項目之間移動。我做錯了什麼?這不是世界空間。

回答

0

所以,問題是,我打電話convertToWorldSpace以錯誤的方式:

var itemPosition = miniSprite.convertToWorldSpace(miniSprite.getPosition()); 

應該是:

var itemPosition = miniSprite.getParent().convertToWorldSpace(miniSprite.getPosition()); 

我需要從CCMenu調用convertToWorldSpace。從父母而不是從孩子。