如何在Flash中为动画影片剪辑定义注册点

时间:2014-07-16 07:12:18

标签: actionscript-3 flash animation flash-cs5

我在flashcs5.5中创建了一个带有多个动画图层的动画片段符号,我需要转移到在AS3中工作的程序员。 我需要定义一个注册(不是转换)指向(0,0)或影片剪辑的确切中心。 问题是,由于影片剪辑是动画的,它的尺寸会根据我在时间轴中所站立的特定帧而改变,所以我在第一帧中定义为中心,在后来的那个中不会如此...对于我的理解,这会导致在AS3舞台上定位动画片段时遇到很多麻烦。 怎么应该接近这个? 我是否通过第一帧定义了注册点?或者最大的"一?或者只是通过movieclip中时间线的中间框架?

任何帮助将不胜感激! (请记住我是一名动画师,虽然我理解AS3的基本规则,但我不是程序员......)

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方式:

//example point to (0,0)
changeRegistrationPoint(yourMovieClipInstanceName, 0, 0);
//example point to exact center (width/2, height/2)
changeRegistrationPoint(yourMovieClipInstanceName, yourMovieClipInstanceName >>1, yourMovieClipInstanceName >>1);


function changeRegistrationPoint(displayObject:DisplayObjectContainer, xPos:Number, yPos:Number):void 
{
    var rectangle:Rectangle = displayObject.getRect(displayObject);
    for (var i:int=0, displayObjectNumChildren = displayObject.numChildren; i < displayObjectNumChildren; i++) 
    {
        displayObject.getChildAt(i).x-=rectangle.x+xPos;
        displayObject.getChildAt(i).y-=rectangle.y+yPos;
    }
    displayObject.x+=rectangle.x+xPos;
    displayObject.y+=rectangle.y+yPos;
    rectangle = null;
}