我有三张图片,我想根据场景大小更改图像大小(默认大小为1024x768)。在每个图像完全加载后,我调用bindableUtils.setter来设置场景大小改变时的宽度/高度,但我不知道如何制作指针或类似的东西。我正在使用公共var img,但它只适用于最后一个完整的图像。
这是我的代码:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import mx.binding.utils.BindingUtils;
public var img:Image;
private function setterWidth(newWidth:Number):void
{
img.width = img.content.width * newWidth / 1024;
}
private function setterHeight(newHeight:Number):void
{
img.height = img.content.height * newHeight / 768;
}
protected function image_completeHandler(event:Event):void
{
img = event.target as Image;
BindingUtils.bindSetter(setterWidth, this, "width");
BindingUtils.bindSetter(setterHeight, this, "height");
}
]]>
</fx:Script>
<mx:Image id="img1" source="img1.jpg" complete="image_completeHandler(event)" />
<mx:Image id="img2" source="img2.jpg" complete="image_completeHandler(event)" y="60"/>
<mx:Image id="img3" source="img3.jpg" complete="image_completeHandler(event)" y="120"/>
</s:Application>
我没有为每个图像使用额外的bindSetter函数。
也许我的想法是如何根据场景的大小改变图像的大小是错误的。你会怎么做?
答案 0 :(得分:3)
<fx:Script>
<![CDATA[
]]>
</fx:Script>
<mx:Image id="img1" source="img1.jpg" scaleX="{width/1024}" scaleY="{height/768}" />
<mx:Image id="img2" source="img2.jpg" scaleX="{width/1024}" scaleY="{height/768}" y="60"/>
<mx:Image id="img3" source="img3.jpg" scaleX="{width/1024}" scaleY="{height/768}" y="120"/>
答案 1 :(得分:0)
您是否尝试percentWidth
和percentHeight
?