每个州更改背景图像

时间:2010-06-04 02:18:44

标签: flex coding-style states

我有一个具有特定背景图像的Component。代码如下:

<mx:backgroundImage>@Embed(source='img1.png')</mx:backgroundImage>

<mx:states>
  <mx:State name='state2'>
    <mx:SetStyle name="backgroundImage">
      <mx:value>@Embed(source='img2.png')</mx:value>
    </mx:SetStyle>
  </mx:State>
</mx:states>

但是当我将状态更改为'state2'时,它实际上并没有改变任何内容。

我错过了这里的具体内容吗?

3 个答案:

答案 0 :(得分:1)

默认目标是主应用。 所以你实际上是在state2而不是Component中设置整个应用程序的背景。 以下是 VBox

的示例
<?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:states>
    <mx:State name="state2">
        <mx:SetStyle name="backgroundImage" target="{VBox1}">
            <mx:value>
                @Embed(source='img2.jpg')
            </mx:value>
        </mx:SetStyle>
    </mx:State>
</mx:states>
<mx:VBox id="VBox1" x="0" y="0" width="50%" height="50%">
    <mx:backgroundImage>
        @Embed(source='img1.jpg')
    </mx:backgroundImage>
</mx:VBox>

</mx:Application>

此外,如果您使用的是Flex 3 Builder,则可以始终切换到设计模式,以查看从基本状态到新状态的更改。它应该在右上角。

编辑组件

主要文件

    

<cbsh:BackSwitch>

</cbsh:BackSwitch>

</mx:Application>

<强>组件

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:states>
    <mx:State name="state2">
        <mx:SetStyle name="backgroundImage" target="{this}">
            <mx:value>
                @Embed(source='img2.jpg')
            </mx:value>
        </mx:SetStyle>
    </mx:State>
</mx:states>
<mx:backgroundImage>
        @Embed(source='img1.jpg')
    </mx:backgroundImage>
<mx:Button x="437" y="269" label="Switch!" click="currentState='state2';"/>
</mx:VBox>

答案 1 :(得分:0)

我没有具体处理过这个问题,但我的直觉是它的设置方式存在问题。 你试过这个:

  

mx:setStyle setStyle name =“backgroundImage value =”@ Embed(source ='img2.png')“/&gt;

答案 2 :(得分:0)

因为这似乎是一种奇怪的错误,我的临时解决方案是让两张不同背景的画布根据状态翻转可见性