·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[as3]as3类文件用于加载图片使用的一个类文件代码供学习

时间:2017-04-26 18:14cnblogs.com
[as3]as3类文件用于加载图片使用的一个类文件代码供学习

 https://github.com/chndyyang/AS3SVGRenderer

  1. package 
  2. { 
  3.     import com.lorentz.SVG.display.SVGDocument; 
  4.     import com.lorentz.SVG.events.SVGEvent; 
  5.     import com.lorentz.processing.ProcessExecutor; 
  6.      
  7.     import flash.display.DisplayObject; 
  8.     import flash.display.Loader; 
  9.     import flash.display.LoaderInfo; 
  10.     import flash.display.Sprite; 
  11.     import flash.events.Event; 
  12.     import flash.events.IOErrorEvent; 
  13.     import flash.net.URLLoader; 
  14.     import flash.net.URLLoaderDataFormat; 
  15.     import flash.net.URLRequest; 
  16.     import flash.utils.ByteArray; 
  17.      
  18.     public class LoadImage extends Sprite 
  19.     { 
  20.         private var _url:String; 
  21.         private var _loader:URLLoader; 
  22.         private var _byLoader:Loader; 
  23.         private var _isNeedAll:Boolean; 
  24.  
  25.         private var _needW:uint; 
  26.         private var _needH:uint; 
  27.          
  28.         public var data:Object; 
  29.  
  30.         public function LoadImage(needWidth:uint = 0, needHeight:uint = 0, url:String = '', isNeedAllResize:Boolean = false) 
  31.         { 
  32.             super(); 
  33.              
  34.             if(url != '')        _url = url; 
  35.             if(needWidth != 0)    _needW = needWidth; 
  36.             if(needHeight != 0)    _needH = needHeight; 
  37.              
  38.             _isNeedAll = isNeedAllResize; 
  39.              
  40.             _loader = new URLLoader(); 
  41.             _loader.dataFormat = URLLoaderDataFormat.BINARY; 
  42.         } 
  43.  
  44.         public function load(url:String=''):void 
  45.         { 
  46.             if(url != '')        _url = url; 
  47.              
  48.             if(_url == '') 
  49.             { 
  50.                 trace("load image error url is null"); 
  51.                 return; 
  52.             } 
  53.  
  54.             _loader.addEventListener(Event.COMPLETE, loadCompleteHandler); 
  55.             _loader.addEventListener(IOErrorEvent.IO_ERROR, loadErrorHandler); 
  56.  
  57.             try 
  58.             { 
  59.                 _loader.load(new URLRequest(_url)); 
  60.             }  
  61.             catch(error:Error)  
  62.             { 
  63.                 trace("load url error"); 
  64.             } 
  65.         } 
  66.          
  67.         private function loadCompleteHandler(event:Event):void 
  68.         { 
  69.             if(_loader == null) return; 
  70.             var ba:ByteArray = _loader.data as ByteArray; 
  71.             if(ba == null)    return; 
  72.             var type:String = getFileType(ba); 
  73.  
  74.             _byLoader = new Loader(); 
  75.             switch(type) 
  76.             { 
  77.                 case ImageType.BMP: 
  78.                 case ImageType.GIF: 
  79.                 case ImageType.PNG: 
  80.                 case ImageType.JPG: 
  81.                 { 
  82.                     _byLoader.loadBytes(ba); 
  83.                     _byLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, byLoadComHandler); 
  84.                     break; 
  85.                 } 
  86.  
  87.                 case ImageType.SVG: 
  88.                 { 
  89.                     ProcessExecutor.instance.initialize(stage); 
  90.  
  91.                     var svg:SVGDocument = new SVGDocument(); 
  92.                     svg.parse(ba.readUTFBytes(ba.length)); 
  93.                     svg.addEventListener(SVGEvent.RENDERED,  
  94.                         function onRendered(event:SVGEvent):void{ 
  95.                             resizeDS(event.target as DisplayObject); 
  96.                         }); 
  97.                     addChild(svg); 
  98.                     break; 
  99.                 } 
  100.      
  101.                 default: 
  102.                 { 
  103.                     break; 
  104.                 } 
  105.             } 
  106.              
  107.         } 
  108.          
  109.         private function byLoadComHandler(event:Event):void 
  110.         { 
  111.             var info:LoaderInfo = event.target as LoaderInfo; 
  112.             resizeDS(info.content); 
  113.             addChild(info.content); 
  114.  
  115.             _loader.removeEventListener(Event.COMPLETE, loadCompleteHandler); 
  116.             _loader.removeEventListener(IOErrorEvent.IO_ERROR, loadErrorHandler); 
  117.             _byLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, byLoadComHandler); 
  118.         } 
  119.  
  120.         private function getFileType(fileData : ByteArray) : String { 
  121.             var b0 : int = fileData.readUnsignedByte(); 
  122.             var b1 : int = fileData.readUnsignedByte(); 
  123.             fileData.position = 0; 
  124.  
  125.             if(b0 == 66 && b1 == 77) { 
  126.                 return ImageType.BMP; 
  127.             }else if(b0 == 255 && b1 == 216) { 
  128.                 return ImageType.JPG; 
  129.             }else if(b0 == 137 && b1 == 80) { 
  130.                 return ImageType.PNG; 
  131.             }else if(b0 == 71 && b1 == 73) { 
  132.                 return ImageType.GIF; 
  133.             }else if(b0 == 60 && b1 == 63){ 
  134.                 return ImageType.SVG; 
  135.             } 
  136.  
  137.             return ImageType.UNKNOW; 
  138.         } 
  139.          
  140.         private function loadErrorHandler(event:IOErrorEvent):void 
  141.         { 
  142.             trace("load image error"); 
  143.         } 
  144.          
  145.         private function resizeDS(ds:DisplayObject):void 
  146.         { 
  147.             var temp:uint; 
  148.             if(_needH != 0){ 
  149.                 temp = ds.height; 
  150.                 ds.height = _needH; 
  151.                 if(!_isNeedAll){ 
  152.                     ds.width = Math.round(ds.height / temp * ds.width); 
  153.                 }else{ 
  154.                     ds.width = _needW; 
  155.                 } 
  156.             }else if(_needW != 0){ 
  157.                 temp = ds.width; 
  158.                 ds.width = _needW; 
  159.                 if(!_isNeedAll){ 
  160.                     ds.height = Math.round(ds.width / temp * ds.height); 
  161.                 }else{ 
  162.                     ds.height = _needH; 
  163.                 } 
  164.  
  165.             } 
  166.         } 
  167.     } 
  168. } 

[as3]as3类文件用于加载图片使用的一个类文件代码供学习

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器