gpt4 book ai didi

apache-flex - 获取在 AS3 中单击鼠标的颜色的最佳方法

转载 作者:行者123 更新时间:2023-12-04 02:47:26 27 4
gpt4 key购买 nike

我有一个图像 (mx),我想获得被点击的像素的单位。
有任何想法吗?

最佳答案

这是一个更简单的实现。您所做的就是使用 拍摄舞台快照。绘制() bitmapData 方法,然后使用 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 ,并删除了创建 Bitmap 的不必要步骤.如果您在 MOUSE_MOVE 上采样颜色那么这对于避免内存问题至关重要。

注意:如果您使用自定义光标 Sprite ,则必须使用“state”以外的对象,否则您将采样自定义 Sprite 的颜色而不是其下的颜色。
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);
}

关于apache-flex - 获取在 AS3 中单击鼠标的颜色的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com