flex 實現圖片播放 方案二 把臨時3張圖片預先載入放入記憶體

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   ar   for   sp   

該方案,是預先載入:前一張,當前,下一張圖片,一共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();            }        }    }}
<?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"                 creationComplete="application1_creationCompleteHandler(event)">    <fx:Script>        <![CDATA[            import mx.events.FlexEvent;                        private var player:ImagePlayers;            protected function application1_creationCompleteHandler(event:FlexEvent):void            {                player=new ImagePlayers();                player.show=show;                player.play=play;                                for(var i:int=5;i<=15;i++)                {                    player.UrlArr.push({url:"http://192.168.2.9/png/data/pm25/"+Strings(i)+".gif"});                }                                player.start();            }            private function Strings(i:int):String            {                if(i<10)                {                    return "00"+i.toString();                }                if(i<100)                {                    return "0"+i.toString();                }                return "";            }        ]]>    </fx:Script>    <fx:Declarations>        <!-- 將非可視元素(例如服務、值對象)放在此處 -->    </fx:Declarations>    <s:VGroup>        <s:HGroup>            <s:Image id="play" source="assets/images/play/play.png" toolTip="播放" click="player.playf()" buttonMode="true" useHandCursor="true" />            <s:Image source="assets/images/play/pre.png" click="player.pref()"  toolTip="上一個" buttonMode="true" useHandCursor="true" />            <s:Image source="assets/images/play/next.png" click="player.nextf()"  toolTip="下一個" buttonMode="true" useHandCursor="true" />        </s:HGroup>        <s:Image id="show"  fillMode="scale" scaleMode="letterbox" smooth="true" smoothingQuality="high"                 width="1000" height="800" />    </s:VGroup></s:Application>

 

flex 實現圖片播放 方案二 把臨時3張圖片預先載入放入記憶體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.