我正在使用UILoader加载我没有源代码的SWF文件。这些SWF文件是在AS2中创建的。他们使用面具。宽度和高度返回未屏蔽的值。
我正在尝试找到剪辑的可见宽度和高度,以便我可以正确缩放它。
例如,我希望SWF适合50x50的空间。可见的SWF是65x65(但我不知道这一点),未屏蔽的大小是100x100。如果我将加载的动画片段的宽度和高度设置为50x50,Flash会根据未屏蔽的部分缩放剪辑,并且我会得到一个缩小得太小的剪辑。请记住,我无法控制SWF内容,因此我无法覆盖宽度/高度或获取蒙版大小。
答案 0 :(得分:1)
如果没有跨域问题并且内容不是太大(BitmapData有大小限制),这应该有效:
function handleComplete(e:Event):void {
var bmd:BitmapData = new BitmapData(loader.width,loader.height,true,0);
bmd.draw(loader);
var rect:Rectangle = bmd.getColorBoundsRect(0xff000000,0xff000000,true);
trace(rect);
}
这将获得包含所有像素值为0xff(完全不透明)的像素的矩形。
答案 1 :(得分:0)
一些想法:
方法1-反编译AS2 swfs,然后覆盖宽度&高度属性返回蒙版的宽度&高度
方法2-创建一个新的AS2 swf,它将尝试&检索加载的swf掩码的尺寸。 由于我不使用AS2,我只是解释逻辑。 测试影片的蒙版属性,如果它不为空,则获取宽度和宽度。如果为null,则对每个子项执行相同的测试,如果一个子项返回一个真值,则退出循环并返回宽度&孩子面具的高度。当然,如果有几个孩子使用口罩,这样做不会太好,在这种情况下,你可以尝试找出哪个口罩更大......