0

我正在尝试将位图 1 与位图 2 进行比较,如果它们等于 0,我希望它们做一些事情。因此,为了查看它返回的内容,我添加了一条痕迹。但似乎它正在追踪与我预期完全不同的东西。这是代码:

var scratch_c : Scratch_card = new Scratch_card ();
var backgr: Background = new Background ();
var mouseclick:Number;
var masking:Sprite = new Sprite()

var bmd1:BitmapData = new BitmapData(742, 165);
var bm:Bitmap = new Bitmap(bmd1);
addChild (bm);
bm.x=20;
bm.y=40;
bmd1.draw(scratch_c);

var bmd2:BitmapData = new BitmapData(742, 165);
var bm2:Bitmap = new Bitmap(bmd2);
addChild (bm2);
bm2.x=20;
bm2.y=40;
bmd2.draw(backgr);
bm2.mask = masking;
addChild(masking);


stage.addEventListener(MouseEvent.MOUSE_DOWN, Pressing);
stage.addEventListener(MouseEvent.MOUSE_MOVE, Moving);
stage.addEventListener(MouseEvent.MOUSE_UP, Lifting);


function Pressing(event:MouseEvent):void {
mouseclick = 1;
}


function Moving(event:MouseEvent):void {
if (mouseclick == 1) {
masking.graphics.beginFill(0x000000);
masking.graphics.drawEllipse(mouseX, mouseY, 70, 60);
masking.graphics.endFill();

}
}


function Lifting(event:MouseEvent):void {
trace(bmd1.compare(bmd2));
mouseclick = 0;
}

这就是它正在追踪的内容痕迹:

如何让它比较 bmd1 和 bmd2 的像素?为什么它不返回一个数字?

4

2 回答 2

3

不是百分比,但它应该返回一个可以指定为图像的新 BitMapData 对象。位图数据比较()

返回 Object — 如果两个 BitmapData 对象具有相同的尺寸(宽度和高度),则该方法返回一个新的 BitmapData 对象,该对象具有两个对象之间的差异(请参阅主要讨论)。如果 BitmapData 对象相等,该方法返回数字 0。如果 BitmapData 对象的宽度不相等,该方法返回数字 -3。如果 BitmapData 对象的高度不相等,则该方法返回数字 -4。

取自这里

结果:

您的位图不等价,这就是为什么您会得到一个由 2 个不同位图组成的对象。

于 2013-02-18T18:41:34.040 回答
1

你有没有尝试过

if(bmd1.compare(bmd2) == bmd2){
    // complete
}

但是,在查看您的代码之后。我认为你需要测试掩蔽而不是 bmd1
所以像这样。

var mymask:BitmapData = new BitmapData(742, 165, true,0x000000000);
mymask.draw(masking);

if(mymask.compare(bmd2) == bmd2){
    // complete
}

未经测试的代码,但应该让你走上正确的道路

于 2013-02-18T21:37:26.167 回答