我对动作脚本很新。我想在mxml中访问已经存在的BitmapImage,以便更改其源。位图图像已经存在于mxml及其id。我没有动态创建它只需要设置它的源。 我已经看过一些例子,但他们动态地添加图像本身我不想要那样。 将使用Action Script3。
这是代码: 请建议。
<fx:Script>
//code to set image source to url1(a string)
</fx:Script>
<s:Graphic>
<s:BitmapImage
id="ini_image"
source="@Embed('C:/horizontal_red.png')"
width="640"
height="480"
fillMode="scale"
includeIn="ready"
/>
</s:Graphic>
我试过这样:
var ini_image:BitmapImage = new BitmapImage();
ini_image.source = url;
但它在命名空间中给出错误可能是因为ii正在创建具有相同名称的相同类型的新对象。这是不允许的。 如果我错了,请纠正我,并建议更正。
答案 0 :(得分:0)
我假设您的应用程序中有多个状态,因此在设置BitmapImage源之前,如果准备好状态是否已初始化,则必须小心。希望以下代码示例能解决您的问题。
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
currentState="other">
<s:states>
<s:State name="ready"/>
<s:State name="other"/>
</s:states>
<fx:Script><![CDATA[
private function onButtonClick(event:MouseEvent):void {
currentState = 'ready';
ini_image.source = 'http://lorempixel.com/200/200';
}
]]></fx:Script>
<s:Graphic>
<s:BitmapImage
id="ini_image"
source="http://lorempixel.com/100/100"
width="640"
height="480"
fillMode="scale"
includeIn="ready"
/>
</s:Graphic>
<s:Button click="onButtonClick(event)"/>
</s:Application>
您还可以在两种状态下包含图像并使用不同的图像源。
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
currentState="other">
<s:states>
<s:State name="ready"/>
<s:State name="other"/>
</s:states>
<s:Graphic>
<s:BitmapImage
id="ini_image"
source.other="http://lorempixel.com/100/100"
source.ready="http://lorempixel.com/200/200"
width="640"
height="480"
fillMode="scale"/>
</s:Graphic>
<s:Button click="onToggleStates(event)"/>
<fx:Script><![CDATA[
private function onToggleStates(event:MouseEvent):void {
currentState = currentState == 'other' ? 'ready' : 'other';
}
]]></fx:Script>
</s:Application>