我在AS3动画中有一个MC,我想从下到上增加它的高度,这意味着注册点应该是MC的底部和宽度的中心(水平中心)。
我该怎么办呢?
谢谢。
答案 0 :(得分:1)
我曾经看过一个小的自定义类,允许您更改显示对象的注册点,就像在Flash创作中一样。如果你好奇的话,请四处寻找。
但是,解决方案相当容易。根据对象如何添加到显示列表来分配显示对象的注册点。您只需要将显示对象添加到显示列表时考虑到这一点,然后设置一些简单的数学来更改注册点://Set up rect's width and height
var rectWidth:uint = 200;
var rectHeight:uint = 100;
//Assign registration point (TL, TC, TR, CL, C, CR, BL, BC, BR = top, center, bottom, left, right)
var registration:String = "C"
//Assign rect's X and Y properties
var rectX:int;
var rectY:int;
switch (registration)
{
case "TL": rectX = 0;
rectY = 0;
break;
case "TC": rectX = -rectWidth / 2;
rectY = 0;
break;
case "TR": rectX = -rectWidth;
rectY = 0;
break;
case "CL": rectX = 0;
rectY = -rectHeight / 2;
break;
case "C": rectX = -rectWidth / 2;
rectY = -rectHeight / 2;
break;
case "CR": rectX = -rectWidth;
rectY = -rectHeight / 2;
break;
case "BL": rectX = 0;
rectY = -rectHeight;
break;
case "BC": rectX = -rectWidth / 2;
rectY = -rectHeight;
break;
case "BR": rectX = -rectWidth;
rectY = -rectHeight;
}
//Draw the rect
var rect:Sprite = new Sprite();
rect.graphics.beginFill(0xFF0000);
rect.graphics.drawRect(rectX, rectY, rectWidth, rectHeight);
rect.graphics.endFill();
答案 1 :(得分:1)
我对旧注册点问题的建议很少......
如果你必须使用AS3动态重新定位它......
var rect:Rectangle = bitmapData.getColorBoundsRect(0xff000000,0,false); yourCroppedBitmapData.copyPixels(bitmapData,rect,...);
......一旦你有一个可靠的左上角走投无路 注册点,你可以做到 数学把这个位图放在一个 Sprite容器(如上所述)进行缩放 它向上。
或者......招聘猴子也很有趣:P
但是,这些是你可以重新定位符号的一些替代方法。