我有一个附加到图层的菜单。在菜单中4个项目垂直对齐。我以这种方式取消菜单(警告!这是Javascript。使用COCOS2D-Html5,框架与iphone相同):
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 :(得分:0)
所以问题是我以错误的方式调用convertToWorldSpace:
var itemPosition = miniSprite.convertToWorldSpace(miniSprite.getPosition());
应该是:
var itemPosition = miniSprite.getParent().convertToWorldSpace(miniSprite.getPosition());
我需要从CCMenu调用convertToWorldSpace。来自父母,而不是来自孩子。