Flex Image控件 source属性引入图片时的一些注意点

方式一:
    [Bindable]
    [Embed(source='resources/icons/chart_bar.png')]
    public var icons:Class;
绑定成类。

方式二:
    var icons:String = 'resources/icons/chart_bar.png';  

引入代码:
    var image:Image=new Image();
    image.source=icons;
    chinaN.addChild(image);

1.方式一会在编译的时候就将图片编入swf文件中,会显著增大swf文件的大小。
2.方式二会在需要加载图片的时候动态去加载。
3.如果使用方式1只要设置好了图片路径就不会出现图片显示不出来的问题,如果不需要考虑swf文件的大小还是尽量使用方式1。
4.如果使用方式2,图片有时候会显示不出来,下面举例说明图片出不来的情况。
   eg:
 <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" 
           minWidth="955" minHeight="600" creationComplete="init();" xmlns:local="*" >
	<fx:Script>
		<![CDATA[
			/**
			 * 该swf将会在根目录下的mis2路径下,并没有放在根目录下。 
			 **/
			private function init():void{
				/** 在控件上直接定义的iamge对象,可以使用方式二直接设置,图片可以展示出来*/
				testImage.source = "assets/GT_AREA/GT_AREA_3.png";
				test1();
				test2();
			}
			
			/** 
			 * 1.向控件上已定义的对象中添加image对象(该图片对象经过了一个hbox包装),使
			 *   用方式二,图片不能正常展现
			 * 2.如果将图片路径从根目录开始写(mis2/assets/GT_AREA/GT_AREA_2.png),就
			 *   可以正常展现
			 * 3.我们可以认为,如果图片对象经过了包装且引入的swf文件不在根目录下,flex
			 *   不会从swf相对路径查找图片,而是从根目录查找
			 **/
			private function test1():void{
				var hboxTemp:HBox = new HBox();
				var iamge:Image = new Image();
				iamge.source = "assets/GT_AREA/GT_AREA_2.png";
				hboxTemp.addChild(iamge);
				hboxT1.addChild(hboxTemp);
			}
			
			/** 向控件上已定义的对象中添加image对象,使用方式二,图片可以显示出来*/
			private function test2():void{
				var iamge:Image = new Image();
				iamge.source = "assets/GT_AREA/GT_AREA_1.png";
				hboxT2.addChild(iamge);
			}
		]]>
	</fx:Script>
	<mx:HBox  y="0"   id="hboxT2" width="700" height="250" backgroundColor="#00FFff"></mx:HBox>
	<mx:HBox  y="250" id="hboxT1"  width="700" height="250"></mx:HBox>
	<mx:Image y="500" id="testImage"  width="700" height="250" >
	</mx:Image>
</s:Application>



你可能感兴趣的:(image,function,Flex,application,library,icons)