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

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

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

 https://github.com/chndyyang/AS3SVGRenderer

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

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

热门文章推荐

请稍候...

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

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