0

我有一个具有特定背景图像的组件。代码如下所示:

<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',它实际上并没有改变任何东西。

我在这里遗漏了什么具体的东西吗?

4

3 回答 3

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>
于 2010-06-04T02:55:17.127 回答
0

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

于 2010-06-04T03:21:33.037 回答
0

我没有专门处理这个问题,但我的直觉是它的值设置方式有问题。你有没有试过这个:

mx:setStyle setStyle name="backgroundImage value="@Embed(source='img2.png')" />

于 2010-06-04T02:39:53.727 回答