flex加载图片的多种方法

来源:互联网 发布:linux安装软件命令yum 编辑:程序博客网 时间:2024/06/05 20:20

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);
                    }

原创粉丝点击