我在 AS3 动画中有一个 MC,我想从下到上增加它的高度,这意味着注册点应该是 MC 的底部和宽度中心(水平中心)。
请问我该怎么做?
谢谢你。
我在 AS3 动画中有一个 MC,我想从下到上增加它的高度,这意味着注册点应该是 MC 的底部和宽度中心(水平中心)。
请问我该怎么做?
谢谢你。
啊,老注册点问题。:)
我曾经看到一个小的自定义类,它允许您更改显示对象的注册点,就像您可以在 Flash 创作中简单地做的那样。如果您好奇,请在 Google 周围搜索。
不过,解决方案相当简单。显示对象的注册点是根据对象添加到显示列表的方式分配的。当您将显示对象添加到显示列表时,您只需考虑到这一点,然后设置一些简单的数学来更改注册点:
//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();
我对旧注册点问题的建议,几件事......
如果您必须使用 AS3 动态重新定位它...
var rect:Rectangle = bitmapData.getColorBoundsRect(0xff000000, 0, false); yourCroppedBitmapData.copyPixels(bitmapData, rect, ...);
...一旦你有一个可靠的左上角注册点,你可以做数学把这个位图定位在一个 Sprite 容器中(如上)以向上缩放它。
或者......雇用猴子也会很有趣:P
但是,是的,这些是您可以重新定位符号的一些替代方法。