如何扩展SWFLoader组件以“适应”其中任何大小的图像?

时间:2010-02-21 18:58:07

标签: flex actionscript-3 actionscript

SWFLoader的 scaleContent 无法完成我想要实现的目标:

<mx:SWFLoader id="img" width="600" height="400" scaleContent="true"/>

当在其中加载尺寸为100x80的图像时,图像不会调整为600x400。那是因为scaleContent = true。

然后,我设置maintainAspectRatio = true。图像确实调整到600x400,但很明显,它完全不成比例。

那么在保持宽高比的同时,始终如何使任何尺寸的图像适合SWFLoader的当前尺寸?可以裁剪已调整大小的图像,这是可以的。

SCENARIO:在上面的SWFloader中加载了大小为1500x10的图像。在这种情况下,高度(10)应调整为400,宽度(1500)应根据高度自动调整大小。将裁剪图像的批次,这很好。

关于如何实现这样的事情的任何指示?

1 个答案:

答案 0 :(得分:1)

改为使用Flex Image Control。

以下代码会将图像强制为您想要的尺寸,而不管图像尺寸如何。我相信这就是你想要的。

<mx:Image id="image1" 
        source="@Embed(source='logo.jpg')" 
        width="20" height="20"/>

因此,无论该图像是800x600,它都将显示为20x20。

有关图像控制的更多信息

Flex将导入图像的高度和宽度设置为图像文件中的高度和宽度设置。默认情况下,Flex不会调整图像大小。

要为导入的图像设置显式高度或宽度,请设置其Image控件的高度和宽度属性。设置height或width属性会阻止父级调整大小。 scaleContent属性的默认值为true;因此,Flex会调整图像的大小,使其适合指定的高度和宽度。默认情况下保持纵横比,因此图像可能无法完全填充指定的空间。将scaleContent属性设置为false以禁用缩放。将maintainAspectRatio属性设置为false,以允许图像填充所有可用空间,无论其大小如何。

完整参考:http://livedocs.adobe.com/flex/3/html/help.html?content=controls_16.html#484971