我有一个具有特定背景图像的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'
时,它实际上并没有改变任何内容。
我错过了这里的具体内容吗?
答案 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)
因为这似乎是一种奇怪的错误,我的临时解决方案是让两张不同背景的画布根据状态翻转可见性