1. 程式人生 > >flex載入圖片的多種方法

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

.addEventListener(Event.COMPLETE,hadler_loadpic_complete);
                }
            }
            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);
                    }