0

我有一个附加到图层的菜单。在菜单中 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,甚至在项目之间转移了。我做错了什么?这不是世界空间。

4

1 回答 1

0

所以问题是我以错误的方式调用 convertToWorldSpace:

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

应该:

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

我需要从 CCMenu 调用 convertToWorldSpace。来自父母而不是来自孩子。

于 2013-08-17T23:20:44.887 回答