博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flex 实现图片播放 方案二 把临时3张图片预加载放入内存
阅读量:6473 次
发布时间:2019-06-23

本文共 6010 字,大约阅读时间需要 20 分钟。

该方案,是预加载:前一张,当前,下一张图片,一共3张图片放入内存中。这样对内存的消耗可以非常小,加载之后的图片就释放内存。

下面示例一个是类ImagePlayers,一个是index.mxml

package{    import flash.display.BitmapData;    import flash.display.Loader;    import flash.events.Event;    import flash.events.TimerEvent;    import flash.net.URLRequest;    import flash.utils.Timer;        import mx.collections.ArrayCollection;        import spark.components.Image;    public class ImagePlayers    {        private var bitmapDataArrPre:ArrayCollection=new ArrayCollection();        private var bitmapDataArrPla:ArrayCollection=new ArrayCollection();        private var bitmapDataArrNex:ArrayCollection=new ArrayCollection();                        private var playerxh:int=0;        private var playTimer:Timer;                public var UrlArr:Array=[];        public  var show:Image;        public  var play:Image;                public function ImagePlayers()        {            playTimer=new Timer(Number(500));            playTimer.addEventListener(TimerEvent.TIMER, function(evt:TimerEvent):void            {                if (playerxh < (UrlArr.length-1))                {                    nextf();                }                else                {                    playTimer.stop();                                        play.toolTip="播放"                    play.source="assets/images/play/play.png";                }            });        }                public function start():void        {            imgLoadPla(UrlArr[0].url);        }                private function imgLoadPre(url:String):void        {            var loader:Loader = new Loader();            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoadedPre);            loader.load(new URLRequest(url));        }        private function imgLoadedPre(e:Event):void        {            var _bitmapData:BitmapData = new BitmapData(e.target.width,e.target.height,false);            _bitmapData.draw(e.target.content);                        bitmapDataArrPre.removeAll();            bitmapDataArrPre.addItem(_bitmapData);        }        private function imgLoadPla(url:String):void        {            var loader:Loader = new Loader();            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoadedPla);            loader.load(new URLRequest(url));        }        private function imgLoadedPla(e:Event):void        {            var _bitmapData:BitmapData = new BitmapData(e.target.width,e.target.height,false);            _bitmapData.draw(e.target.content);                        bitmapDataArrPla.removeAll();            bitmapDataArrPla.addItem(_bitmapData);                        if(playerxh==0)            {                show.source=bitmapDataArrPla[0];                imgLoadNex(UrlArr[1].url);            }        }        private function imgLoadNex(url:String):void        {            var loader:Loader = new Loader();            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoadedNex);            loader.load(new URLRequest(url));        }        private function imgLoadedNex(e:Event):void        {            var _bitmapData:BitmapData = new BitmapData(e.target.width,e.target.height,false);            _bitmapData.draw(e.target.content);                        bitmapDataArrNex.removeAll();            bitmapDataArrNex.addItem(_bitmapData);                    }        //上一张        public function pref():void        {            if(playerxh>0)            {                bitmapDataArrNex.removeAll();                bitmapDataArrNex.addItem(bitmapDataArrPla[0]);                                bitmapDataArrPla.removeAll();                bitmapDataArrPla.addItem(bitmapDataArrPre[0]);                                playerxh--;                if(playerxh!=0)                {                    imgLoadPre(UrlArr[playerxh-1].url);                }                                                show.source=bitmapDataArrPla[0];            }                    }        //下一张        public function nextf():void        {            if(playerxh<(UrlArr.length-1))            {                bitmapDataArrPre.removeAll();                bitmapDataArrPre.addItem(bitmapDataArrPla[0]);                                bitmapDataArrPla.removeAll();                bitmapDataArrPla.addItem(bitmapDataArrNex[0]);                                playerxh++;                if(playerxh!=(UrlArr.length-1))                {                    imgLoadNex(UrlArr[playerxh+1].url);                }                                show.source=bitmapDataArrPla[0];            }        }        //播放        public function playf(delay:Number=500):void        {            if(play.toolTip=="播放")            {                play.toolTip="暂停"                play.source="assets/images/play/pause.png";                if(delay!=playTimer.delay)                {                    playTimer.delay=delay;                }                playTimer.start();            }            else if(play.toolTip=="暂停")            {                play.toolTip="播放"                play.source="assets/images/play/play.png";                playTimer.stop();            }        }    }}

 

转载地址:http://tyvko.baihongyu.com/

你可能感兴趣的文章
Spring中jdbcTemplate的用户实例
查看>>
[模板] 快速傅里叶变换/FFT/NTT
查看>>
DecimalFormat 数据格式设置 SimpleDateFormat时间格式的用法介绍 --转载
查看>>
Android 的Margin和Padding属性以及支持的长度单位
查看>>
653. Two Sum IV - Input is a BST
查看>>
HDU ACM 1050 Moving Tables
查看>>
Django templates加载css/js/image等静态资源
查看>>
Eclipse C + GTK2.0环境构筑
查看>>
caffe solver
查看>>
Rhel6-heartbeat+lvs配置文档
查看>>
[CF340D]Bubble Sort Graph/[JZOJ3485]独立集
查看>>
ORACLE分科目统计每科前三名的学生的语句
查看>>
第一次冲刺--查看活动详情用户场景分析
查看>>
0317复利计算的回顾与总结
查看>>
函数对象
查看>>
Sharepoint学习笔记—习题系列--70-573习题解析 -(Q70-Q72)
查看>>
最全最新个税计算公式---今天你税了吗?
查看>>
linux shell 正则表达式(BREs,EREs,PREs)差异比较(转,当作资料查)
查看>>
MongoDB--CSharp Driver Quickstart .
查看>>
#pragma mark 添加分割线 及 其它类似标记 - 转
查看>>