我在flashcs5.5中创建了一个带有多个动画图层的动画片段符号,我需要转移到在AS3中工作的程序员。 我需要定义一个注册(不是转换)指向(0,0)或影片剪辑的确切中心。 问题是,由于影片剪辑是动画的,它的尺寸会根据我在时间轴中所站立的特定帧而改变,所以我在第一帧中定义为中心,在后来的那个中不会如此...对于我的理解,这会导致在AS3舞台上定位动画片段时遇到很多麻烦。 怎么应该接近这个? 我是否通过第一帧定义了注册点?或者最大的"一?或者只是通过movieclip中时间线的中间框架?
任何帮助将不胜感激! (请记住我是一名动画师,虽然我理解AS3的基本规则,但我不是程序员......)
答案 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;
}