如何在数组中使用Parent?

时间:2014-03-10 02:44:29

标签: actionscript-3 actionscript

我想设置一些动画片段的坐标。但它显示了基于他们自己的起源的动画片段。所以我想我必须使用“父母”。这是我的代码:

...
    d2: {
        piece: wp1_txt,
        pieceLoc: {
            parent.x: "147",
            parent.y: "297"
        }
    },

...
addChild(squareArr.d2.piece);
squareArr.d2.piece.x = squareArr.d2.pieceLoc.parent.x;
squareArr.d2.piece.y = squareArr.d2.pieceLoc.parent.y;

TweenLite.to(currentPiece, 0.3, {x:squareArr[newSquare].pieceLoc.parent.x, y:squareArr[newSquare].pieceLoc.parent.y, ease:Linear.easeNone, onComplete:isMovingFunction});

上面的代码(没有父代)正在将文本字段移出舞台。当我将x和y设置为0时,文本字段保持自己的位置而不是出现在左上角。

2 个答案:

答案 0 :(得分:1)

尝试使用localToGlobal函数http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001320.html 孩子的坐垫是相对于父母的。如果你想使用全局坐标,localToGlobal / globalToLocal是个不错的选择。

答案 1 :(得分:0)

“使用父母”是什么意思?当您向容器添加一些显示对象时,将计算父项的位置,而无需您进行任何其他计算。如果您想要某些显示对象的商店坐标:

d2: {
    piece: wp1_txt,
    pieceLoc: {
        x: someDisplayObject.x,
        y: someDisplayObject.y,
        //If you need store coordinates of some parent object
        parentX: someDisplayObject.parent.x
        parentY: someDisplayObject.parent.y
    }
}

//...
var addedObject:DisplayObject = addChild(squareArr.d2.piece);
addedObject.x = squareArr.d2.pieceLoc.x;
addedObject.y = squareArr.d2.pieceLoc.y;
  

当我将x和y设置为0时,文本字段保持自己的位置而不是出现在左上角。

这是因为TextField的父级有自己的坐标,如果可以的话,将父级移动到0,0坐标。此外,在您的代码中,您将坐标作为字符串传递给TweenLite,Tweenlite会将它们渲染为当前位置的添加。

将TextField移出舞台,向右滑动:

TweenLite.to(currentPiece, 0.3, {x:stage.stageWidth, ease:Linear.easeNone, onComplete:isMovingFunction});