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

[AS3]as3.0处理加载透明gif,png图片代码示例(4)

时间:2012-08-28 11:57blog.163.com
第二种方法是把这种图片里的像素重新处理,只有不透明的像素才留下来 原图san.png 因为图片上传网站的原因把图片透明背景处理成淡蓝色的了 privatefunctioncopyImagExtendTransparent(bit:BitmapData):Sprite{ var

第二种方法是把这种图片里的像素重新处理,只有不透明的像素才留下来

原图san.png

as3 关于加载透明图片 - 云卷云舒 - 云卷云舒的博客

因为图片上传网站的原因把图片透明背景处理成淡蓝色的了

  1. private function copyImagExtendTransparent(bit:BitmapData):Sprite{  
  2.    var _width:uint=bit.width;  
  3.    var _height:uint=bit.height;  
  4.    var ht:Sprite=new Sprite();  
  5.             for(var x:uint=0;x<_width;x++){  
  6.                 for(var y:uint=0;y<_height;y++){  
  7.                     if(bit.getPixel32(x,y)){  
  8.                      var aphaValue:uint=bit.getPixel32(x,y) >> 24 & 0xFF;  
  9.                      ht.graphics.beginFill(bit.getPixel(x,y),aphaValue/255);  
  10.       ht.graphics.drawRect(x,y,1,1);   
  11.       ht.graphics.endFill();  
  12.      }  
  13.                 }  
  14.             }  
  15.    return ht;  
  16.   } 

as3 关于加载透明图片 - 云卷云舒 - 云卷云舒的博客

处理完的图片效果和原图一样 不过在透明位置不会效应鼠标事件,图片的宽高也不包括透明位置

  1. private function getImageBorder(bit:BitmapData):Sprite{  
  2.    var _width:uint=bit.width;  
  3.    var _height:uint=bit.height;  
  4.    var ht:Sprite=new Sprite();  
  5.    ht.graphics.beginFill(0);  
  6.    for(var x:uint=0;x<_width;x++){  
  7.                 for(var y:uint=0;y<_height;y++){  
  8.                     if(bit.getPixel32(x,y)){  
  9.       if(!bit.getPixel32(x-1,y)||!bit.getPixel32(x,y-1)||!bit.getPixel32(x+1,y)||!bit.getPixel32(x,y+1)){  
  10.        ht.graphics.drawRect(x,y,1,1);   
  11.       }  
  12.      }  
  13.                 }  
  14.             }  
  15.     ht.graphics.endFill();  
  16.    return ht;  
  17.   } 

获取图片的边框

  1. private function copyNoAphaImag(bit:BitmapData):Sprite{  
  2.    var minx:uint=100000;  
  3.    var miny:uint=100000;  
  4.    var pointXArray:Array=new Array();  
  5.    var pointYArray:Array=new Array();  
  6.    var _width:uint=bit.width;  
  7.    var _height:uint=bit.height;  
  8.             for(var x:uint=0;x<_width;x++){  
  9.                 for(var y:uint=0;y<_height;y++){  
  10.                     if(bit.getPixel32(x,y)){  
  11.       minxminx=minx>x?x:minx;  
  12.       minyminy=miny>y?y:miny;  
  13.       pointXArray.push(x);  
  14.       pointYArray.push(y);  
  15.      }  
  16.                 }   
  17.             }  
  18.    var ht:Sprite=new Sprite();  
  19.    ht.graphics.beginFill(0);  
  20.    var _length:uint=pointXArray.length;  
  21.    for(var i:uint=0;i<_length;i++){  
  22.     ht.graphics.drawRect(pointXArray[i]-minx,pointYArray[i]-miny,1,1);   
  23.    }  
  24.    ht.graphics.endFill();  
  25.  
  26.    ht.x=minx;  
  27.    ht.y=miny;;  
  28.    return ht;  
  29.   } 

as3 关于加载透明图片 - 云卷云舒 - 云卷云舒的博客

这个方法得到图片和第一个方法外表看没有差别,但第一个图片的X,Y值是0,0.而这个X,Y值则是剔除透明区域后,图片仍在原位置时所需的X,Y值,更符合现实逻辑。感兴趣的同学可以分别输出他俩的宽高和X,Y值,比较一下。( 云卷云舒  )

热门文章推荐

请稍候...

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

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