请教怎样更换flex背景图片(用BorderContainer)?
各位老大,小弟用如下代码实现了设置flex的背景图片:<s:BorderContainerbackgroundImage="@Embed(source='red.png'...
各位老大,小弟用如下代码实现了设置flex的背景图片:
<s:BorderContainer backgroundImage="@Embed(source='red.png')"
backgroundImageFillMode="clip"
width="80" height="30" x="600" y="154"
borderVisible="false" visible="true" id="beijing">
</s:BorderContainer>
可是我想动态更换背景图片,我先这样实现:加个id为beijing,然后更改beijing的图片source,但是始终达不到目的,请教各位老大指点啊,感激不尽!! 展开
<s:BorderContainer backgroundImage="@Embed(source='red.png')"
backgroundImageFillMode="clip"
width="80" height="30" x="600" y="154"
borderVisible="false" visible="true" id="beijing">
</s:BorderContainer>
可是我想动态更换背景图片,我先这样实现:加个id为beijing,然后更改beijing的图片source,但是始终达不到目的,请教各位老大指点啊,感激不尽!! 展开
1个回答
展开全部
“加个id为beijing,然后更改beijing的图片source.“这个思路不对。
1、你设定的id是BorderContainer的,而BorderContainer并没有source提供给你去更改背景图片。
2、你应该了解一些@Embed(source='red.png')这种用法的含义。flex中使用图片有两种方式,一种通过路径,另一种使用Embed嵌入。前一种可以通过改变source来更换图片,后如码氏一种却不可以,Embed的资源,被嵌入到编译生成的swf中。
你要做的是修改BorderContainer的backgroundImage,但这个不是BorderContainer的渣散属性,是一个样式,需要用setStyle("backgroundImage", "")。
把需要参与更换的图片声明为嵌入的资源变量
[Bindable]
[Embed(source="red.png")]
private var red_backGround:Class;
[Bindable]
[Embed(source="blue.png"模橡)]
private var blue_backGround:Class;
在你的动态触发实现的响应里处理
beijing.setStyle("backgroundImage", red_backGround);
主要基于Flash Builder 4开发,希望以上信息对你有帮助!
1、你设定的id是BorderContainer的,而BorderContainer并没有source提供给你去更改背景图片。
2、你应该了解一些@Embed(source='red.png')这种用法的含义。flex中使用图片有两种方式,一种通过路径,另一种使用Embed嵌入。前一种可以通过改变source来更换图片,后如码氏一种却不可以,Embed的资源,被嵌入到编译生成的swf中。
你要做的是修改BorderContainer的backgroundImage,但这个不是BorderContainer的渣散属性,是一个样式,需要用setStyle("backgroundImage", "")。
把需要参与更换的图片声明为嵌入的资源变量
[Bindable]
[Embed(source="red.png")]
private var red_backGround:Class;
[Bindable]
[Embed(source="blue.png"模橡)]
private var blue_backGround:Class;
在你的动态触发实现的响应里处理
beijing.setStyle("backgroundImage", red_backGround);
主要基于Flash Builder 4开发,希望以上信息对你有帮助!
更多追问追答
追问
多谢大哥指点,我确实是对@Embed了解的不是很透,不过照这样写的话blue.png和red.png都是要编译入生成的swf中了吧,那么如果我有七八张图片的选择的话,岂不是这么多张图片都是要被编译入swf中,那么最后swf的体积是不是会很大,那么可以解决这个问题吗?还是我理解有误?
追答
资源嵌入确实会增大swf的体积。
给你提供两种方法
1、动态加载图片,设置BorderContenter的样式,使用SWFLoader
//声明一个swfloader用于加载图片
//侦听加载完成,设置borderContainer的backgroundImage
private function id_swfLdrCompleteHandler(event:Event):void
{
beijing.setStyle("backgroundImage", id_swfLdr.content);
}
上面是一个框架,你只需要在动态触发事件响应里处理
...
switch(value)
{
case vlaue_1:
id_swfLdr.load('red.png');
break;
case value_2:
id_swfLdr.load('blue.png');
break;
...
2、mxml转成as,对相应的标签会添加到容器里,UI上呈现的组件标签都有一个“层”的概念。
你最先添加的被放在底层。
//在相应的事件处理里面
...
case value_1:
id_backGround.source="red.png";
break;
...
这样也是OK的!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询