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

[AS3]as3.0忽略PNG透明区域的代码示例

时间:2012-08-28 11:46cnblogs.com
[AS3]as3.0忽略PNG透明区域的代码示例,as3与png,png取消透明事件
[AS3]as3.0忽略PNG透明区域的代码示例 代码:
 
PNGLoader.as
  1. package net.l4cd.display    
  2. {    
  3.     import flash.display.BitmapData;    
  4.     import flash.display.Loader;    
  5.     import flash.display.Sprite;    
  6.     import flash.events.Event;    
  7.     import flash.events.IOErrorEvent;    
  8.     import flash.events.ProgressEvent;    
  9.     import flash.geom.Matrix;    
  10.     import flash.net.URLRequest;    
  11.     import flash.system.LoaderContext;    
  12.     import flash.utils.ByteArray;    
  13.     
  14.     /**   
  15.      * PNGLoader,主要解决png图片透明像素处事件的问题   
  16.      * @author L4cd.Net   
  17.      *   
  18.      */    
  19.     public class PNGLoader extends Sprite    
  20.     {    
  21.         private var loader:Loader = new Loader();    
  22.         private var hit:Sprite = new Sprite();    
  23.         public function PNGLoader()    
  24.         {    
  25.             addChild(loader);    
  26.             addChild(hit);    
  27.             hit.visible = false;    
  28.             hit.mouseEnabled = false;    
  29.             mouseChildren = false;    
  30.             hithitArea = hit;    
  31.             loader.contentLoaderInfo.addEventListener(Event.COMPLETE,complete);    
  32.             loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,error);    
  33.             loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progress);    
  34.         }    
  35.         private function complete(e:Event):void    
  36.         {    
  37.             dispatchEvent(e);    
  38.             update();    
  39.         }    
  40.         private function error(e:IOErrorEvent):void    
  41.         {    
  42.             dispatchEvent(e);    
  43.         }    
  44.         private function progress(e:ProgressEvent):void    
  45.         {    
  46.             dispatchEvent(e);    
  47.         }    
  48.         public function load(request:URLRequest,context:LoaderContext=null):void    
  49.         {    
  50.             loader.load(request,context);    
  51.             clear();    
  52.         }    
  53.         public function loadBytes(bytes:ByteArray,context:LoaderContext=null):void    
  54.         {    
  55.             loader.loadBytes(bytes,context);    
  56.             clear();    
  57.         }    
  58.         public function unload():void    
  59.         {    
  60.             loader.unload();    
  61.             clear();    
  62.         }    
  63.         public function close():void    
  64.         {    
  65.             loader.close();    
  66.             clear();    
  67.         }    
  68.         private function clear():void    
  69.         {    
  70.             hit.graphics.clear();    
  71.         }    
  72.         private function update():void    
  73.         {    
  74.             if(!loader.content)return;    
  75.             var bit:BitmapData = new BitmapData(loader.width,loader.height,true,0x00000000);    
  76.             bit.draw(loader);    
  77.             //重绘图象到bit    
  78.             clear();    
  79.             hit.graphics.beginFill(0);    
  80.             for(var x:uint=0;x<bit.width;x++)    
  81.             {    
  82.                 for(var y:uint=0;y<bit.height;y++)    
  83.                 {    
  84.                     if(bit.getPixel32(x,y))hit.graphics.drawRect(x,y,1,1);    
  85.                 }    
  86.             }    
  87.             //以graphics画出bit的无透明区域    
  88.             hit.graphics.endFill();    
  89.         }    
  90.     }    
  91. }    
  92. PNGLoaderExample.as  
  93. view plaincopy to clipboardprint?  
  94. package    
  95. {    
  96.     import flash.display.Loader;    
  97.     import flash.display.Sprite;    
  98.     import flash.events.MouseEvent;    
  99.     import flash.filters.GlowFilter;    
  100.     import flash.net.URLRequest;    
  101.     
  102.     import net.l4cd.display.PNGLoader;    
  103.     
  104.     [SWF(width="600",height="400")]    
  105.     /**   
  106.      * PNGLoaderExample   
  107.      * @author L4cd.Net   
  108.      *   
  109.      */    
  110.     public class PNGLoaderExample extends Sprite    
  111.     {    
  112.         public function PNGLoaderExample()    
  113.         {    
  114.             var pl:PNGLoader = new PNGLoader();    
  115.             pl.load(new URLRequest("10020601.png"));    
  116.             addChild(pl);    
  117.             pl.y = 20;    
  118.             pl.addEventListener(MouseEvent.ROLL_OUT,o);    
  119.             pl.addEventListener(MouseEvent.ROLL_OVER,o);    
  120.     
  121.             var ld:Loader = new Loader();    
  122.             ld.load(new URLRequest("10020601.png"));    
  123.             addChild(ld);    
  124.             ld.x = 320;    
  125.             ld.y = 20;    
  126.             ld.addEventListener(MouseEvent.ROLL_OUT,o);    
  127.             ld.addEventListener(MouseEvent.ROLL_OVER,o);    
  128.     
  129.             graphics.lineStyle(1);    
  130.             graphics.drawRect(20,20,250,250);    
  131.     
  132.             graphics.drawRect(320,20,250,250);    
  133.         }    
  134.         private function o(e:MouseEvent):void    
  135.         {    
  136.             e.target.filters = (e.type == MouseEvent.ROLL_OVER)?[new GlowFilter()]:[];    
  137.         }    
  138.     }    
  139. }   

 

热门文章推荐

请稍候...

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

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