Actionscript 3 AS3黑白位图-出于压缩原因

Actionscript 3 AS3黑白位图-出于压缩原因,actionscript-3,bitmap,data-compression,color-channel,Actionscript 3,Bitmap,Data Compression,Color Channel,我有一个由BitmapData组成的字段,用于像素精确命中检测 但是,BitmapData自然为每个像素存储2^32(或2^24,没有alpha?)的可能性。我只需要2-黑色或白色 但我仍然需要使用.draw使其他对象绘制到该位图数据上。它不需要是可见的 提取一个像素用于命中检测似乎并不太困难,但不在每个像素之间循环绘制似乎很困难。可能吗 解决此问题的正确方法是什么?如果您希望位图数据仅为黑色或白色,则可以在该位图上绘制新遮罩后使用。要将现有的BitmapData转换为黑白,阈值为半个红色通道,

我有一个由BitmapData组成的字段,用于像素精确命中检测

但是,BitmapData自然为每个像素存储2^32(或2^24,没有alpha?)的可能性。我只需要2-黑色或白色

但我仍然需要使用.draw使其他对象绘制到该位图数据上。它不需要是可见的

提取一个像素用于命中检测似乎并不太困难,但不在每个像素之间循环绘制似乎很困难。可能吗


解决此问题的正确方法是什么?

如果您希望位图数据仅为黑色或白色,则可以在该位图上绘制新遮罩后使用。要将现有的
BitmapData
转换为黑白,阈值为半个红色通道,请执行以下操作:

bd.threshold(bd,bd.rect,new Point(),"<",0x00800000,0x0,0x00ff0000,true);
bd.threshold(bd,bd.rect,new Point(),">=",0x00800000,0x00ffffff,0x00ff0000,true);
bd.threshold(bd,bd.rect,new Point(),“=”,0x00800000,0x00ffffff,0x00ff0000,true);

第一个调用将红色低于0x80的所有点变为黑色,第二个调用将将其余所有点变为白色。如果需要,请将遮罩和阈值更改为使用绿色或蓝色通道。考虑将一个正确引导的<代码>颜色转换< /COD>对象应用到您的代码>绘制< /COD>调用,使该掩码正确地应用于新绘制的对象。

我不理解这一点:“但我仍然需要使用.Dead来使其他对象被绘制到该BITMAPATABATE上。”什么意思?为什么需要将其他对象绘制到位图数据中,该位图数据需要是黑白的,并且是命中检测掩码?