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 がシフトされただけでなく、アイテム間でもシフトされました。私が間違っていることは何ですか?これは WorldSpace ではありません。

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 に答える