flex載入圖片的多種方法
1、最直接的,直接賦值圖片地圖。 多用於控制 img元件
img1.source="assets/11.gif";
2、動態載入,多用於獲取圖片的data,然後進行處理。當然也可以顯示到img元件裡。
//顯示影象(!!要求bitmap物件必須事先載入完,另外必須用sprite作為容器,shape做容器不行)。
if(_bmpdata!=null) //圖片事先載入完畢再繪製圖片。
{
var s:Bitmap=new Bitmap(_bmpdata); //img.bitmapData _bmpdata
var spr:Sprite=new Sprite();
spr.addChild(s);
spr.x=x;
spr.y=y;
this.addChild(spr);
}
private static var _bmpdata:BitmapData;
private static var loader:Loader;
private static var loaderUrl:String = "assets/1_24x24.png";
//!!載入圖片是非同步完成的,所以要畫影象,要事先獲取影象內容。獲取成功之後才能進行畫圖。
private function loadpic():void
{
if(_bmpdata==null)
{
loader = new Loader();//載入圖片
loader.load(new URLRequest("assets/2_24x24.png"));
loader.contentLoaderInfo
}
}
private function hadler_loadpic_complete(event:Event):void
{
var width:Number = loader.content.width;
var height:Number = loader.content.height;
_bmpdata=Bitmap(loader.content).bitmapData;
img_p1.source=_bmpdata; //直接賦bmpdata即可 測試bmpdata是否有效果用。
}
//!!loader的content就是bitmap物件,而不是bitmapdata物件
var ss:Bitmap=imgloader.content as Bitmap;
FlexGlobals.topLevelApplication.ofm_main.img2.source=ss;
3、不常用的。
[Embed(source="assets/bb.gif")] //改變image圖片宣告。內建圖片。
private var flag:Class;
//改變image的圖片.內建圖片。
var asset:BitmapAsset = new flag() as BitmapAsset;
img1.source = asset;
不過由於第2種方法要是載入大量圖片,程式碼過大,此時第3種方法更簡潔,動態使用bmpdata如下:
[Embed(source="/assets/1_24x24.png")] private staticvar _image:Class;
private static var _bmpdata:BitmapData;
......
_bmpdata=(new _image() as Bitmap).bitmapData; //已驗證,可以出圖。
if(_bmpdata!=null) //圖片事先載入完畢再繪製圖片。
{
var s:Bitmap=new Bitmap(_bmpdata); //img.bitmapData _bmpdata
var spr:Sprite=new Sprite();
spr.addChild(s);
spr.x=x;
spr.y=y;
this.addChild(spr);
}