flex – 在AS3中获取鼠标点击的颜色的最佳方式
发布时间:2020-12-15 02:17:12 所属栏目:百科 来源:网络整理
导读:我有一个图像(mx),我想得到被点击的像素的uint. 有任何想法吗? 解决方法 这是一个更简单的实现.你所做的就是使用bitmapData的draw()方法拍摄舞台的快照,然后在鼠标下的像素上使用getPixel().这样做的好处就是可以将任何被绘制到舞台上的东西,而不仅仅是一个
我有一个图像(mx),我想得到被点击的像素的uint.
有任何想法吗? 解决方法
这是一个更简单的实现.你所做的就是使用bitmapData的draw()方法拍摄舞台的快照,然后在鼠标下的像素上使用getPixel().这样做的好处就是可以将任何被绘制到舞台上的东西,而不仅仅是一个给定的位图.
import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.*; stage.addEventListener(MouseEvent.CLICK,getColorSample); function getColorSample(e:MouseEvent):void { var bd:BitmapData = new BitmapData(stage.width,stage.height); bd.draw(stage); var b:Bitmap = new Bitmap(bd); trace(b.bitmapData.getPixel(stage.mouseX,stage.mouseX)); } 希望这是有帮助的! 编辑: 此编辑版本使用单个BitmapData,并删除创建位图不必要的步骤.如果您在MOUSE_MOVE上采样颜色,那么这对于避免内存问题至关重要. 注意:如果您使用自定义光标精灵,则必须使用“state”以外的对象,否则您将对自定义精灵的颜色进行抽样,而不是使用它. import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.*; private var _stageBitmap:BitmapData; stage.addEventListener(MouseEvent.CLICK,getColorSample); function getColorSample(e:MouseEvent):void { if (_stageBitmap == null) { _stageBitmap = new BitmapData(stage.width,stage.height); } _stageBitmap.draw(stage); var rgb:uint = _stageBitmap.getPixel(stage.mouseX,stage.mouseY); var red:int = (rgb >> 16 & 0xff); var green:int = (rgb >> 8 & 0xff); var blue:int = (rgb & 0xff); trace(red + "," + green + "," + blue); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |