flex – 在AS3中获取鼠标点击的颜色的最佳方式

我有一个图像(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);
}

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...