热区转矢量对象的工具类--关键、简单的代码

来源:互联网 发布:男生护肤 知乎 编辑:程序博客网 时间:2024/06/07 05:11

以下是自己写的一个,工具类;

hotArea是热区对象,canvas是源位图对象

作用是,从canvas中,截图一个像素级的矢量图对象,而且是Sprite类(意味着可以有丰富的事件交互)


源码:

/***************************************************** *   *  The Initial Developer of the Original Code is Administrator. *   *  HotAreaToGraphicsUtil.as *  Create By Jave.Lin(afeng) *  2013-1-3 下午22:07:18 *   *****************************************************/package cn.taole.webgame.jhm.plugin.garden.view.util{import cn.taole.webgame.jhm.common.util.CommonUtil;import flash.display.Bitmap;import flash.display.BitmapData;import flash.display.DisplayObject;import flash.display.DisplayObjectContainer;import flash.display.Sprite;import flash.geom.Matrix;import flash.geom.Rectangle;import taole.display.ui.core.UIBitmap;/** 热区转矢量对象的工具类 */public class HotAreaToGraphicsUtil{public static function getGraphicObj(hotArea:DisplayObject,canvas:Bitmap):Sprite{var uiBmp:UIBitmap=canvas as UIBitmap;var bmd:BitmapData=new BitmapData(hotArea.width,hotArea.height,true,0);bmd.copyPixels(canvas.bitmapData,new Rectangle(hotArea.x,hotArea.y,bmd.width,bmd.height),CommonUtil.EMPTY_POINT);var result:Sprite=new Sprite();result.graphics.clear();result.graphics.beginBitmapFill(bmd);var hotAreaBmd:BitmapData=((hotArea as DisplayObjectContainer).getChildAt(0) as Bitmap).bitmapData;var w:Number = bmd.width;var h:Number = bmd.height;for (var i:uint=0; i<w; i++){for (var j:uint=0; j<h; j++){if (bmd.getPixel32(i,j) && hotAreaBmd.getPixel32(i,j)){//这里就可以改一下判断条件,就可以满足你的需求result.graphics.drawRect(i,j,1,1);}}}result.graphics.endFill();return result;}}}


原创粉丝点击