2013-08-17 3 views
0

У меня есть меню, прикрепленное к слою. В меню 4 элемента выровнены по вертикали. Я decleare меню таким образом (Предупреждение Это Javascript Использование cocos2d-html5, структура такая же, как на Iphone!.):Странное поведение convertToWorldSpace для MenuItems в CCMenu

 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, но даже сдвиг между элементами. Что я делаю неправильно? Это не WorldSpace.

ответ

0

Таким образом, проблема в том, что я звоню convertToWorldSpace в неправильном направлении:

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

Должно быть:

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

мне нужно позвонить convertToWorldSpace из CCMenu. От родителя, а не от ребенка.