如何使用动作脚本在mxml中设置位图图像的源参数

时间:2014-07-01 10:24:45

标签: actionscript-3 mxml

我对动作脚本很新。我想在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正在创建具有相同名称的相同类型的新对象。这是不允许的。 如果我错了,请纠正我,并建议更正。

1 个答案:

答案 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>