flex 数据绑定问题Java code[Embed(img/bg5.jpg)]private var pb:Class其中 “img/bg5.jpg” 如何动态绑
flex 数据绑定问题
Java code [Embed("img/bg5.jpg")] private var pb:Class;
其中 “img/bg5.jpg” 如何动态绑定 ???急,谢谢
[解决办法]如果你是用Image等控件去加载图片,就需要用到控件的Load方法,这样才是动态的。Embed是嵌入式,编译程序的时候就已经加载进去了,是没法改变的
[解决办法][解决办法][解决办法][解决办法]资源的载入分编译时载入和运行时载入,用了Embed标签就肯定会编译时载入,运行时载入的话就是运行时去请求图片资源, 象image,直接将图片的url给source属性,它就会自己去载入指定路径的图片,看你这个class是想用在哪里了,推荐你一个工具类IconUtility,可以动态获得图片的class,但与使用图片的控件关系很大,象Button的icon就可以用,象系统光标图标就不能用,自己看看吧,也许用的上
http://www.flexrain.cn/flex/flex-iconutility-icon.html
[解决办法][解决办法]这样估计就写死了.
看看看这个
<?xml version="1.0" encoding="utf-8"?>
<s:Application name="Spark_Border_backgroundImage_dynamic_test"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo">
<s:controlBarContent>
<s:Button label="ColdFusion" click="swfLdr.load('cf_appicon-tn.gif');" />
<s:Button label="Flash Player" click="swfLdr.load('fl_player_appicon-tn.gif');" />
<s:Button label="Flex" click="swfLdr.load('fx_appicon-tn.gif');" />
<s:Button label="Adobe" click="swfLdr.load('http://helpexamples.com/flash/images/logo.png');" />
</s:controlBarContent>
<fx:Script>
<![CDATA[
protected function swfLdr_completeHandler(evt:Event):void {
brdr.setStyle("backgroundImage", swfLdr.content);
}
]]>
</fx:Script>
<fx:Declarations>
<mx:SWFLoader id="swfLdr" complete="swfLdr_completeHandler(event);" />
</fx:Declarations>
<s:Border id="brdr"
backgroundImageFillMode="repeat"
borderColor="haloOrange"
borderWeight="10"
width="320" height="240"
horizontalCenter="0" verticalCenter="0">
<s:Label id="sdkVer"
color="haloOrange"
fontSize="48"
fontWeight="bold"
left="20" top="20"
creationComplete="sdkVer.text = mx_internal::VERSION;" />
</s:Border>
</s:Application>
可以动态加载的.
[解决办法]
看下API backgroundImage的说明,你就明白了。
backgroundImage :组件的背景图像。此样式可以是绝对或相对 URL 或类
你不用类,用URL就ok了呗。下面是例子
XML code<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" backgroundImage="{imgURL}"> <mx:Script> <![CDATA[ [Bindable] private var imgURL:String = null; private function changeBackgroundImage(url:String):void { imgURL = url; } ]]> </mx:Script> <mx:Button label="test" click="changeBackgroundImage('img/allLeft.jpg')"/> <mx:Button label="test" click="changeBackgroundImage('img/allRight.jpg')"/></mx:Application>
[解决办法]
补充一下:
如果不用绑定,可以用this.setStyle("backgroundImage", imgURL);// imgURL是图片的路径
[解决办法]
setStyle这个方法尽量少用或者不用,很影响效率的方法。参考API