Actionscript 3 比较位图不起作用
我试图比较位图1和位图2,如果它们等于0,我希望它们做些什么。因此,为了查看它返回的内容,我添加了一个跟踪。但它似乎在寻找与我预期完全不同的东西。代码如下:Actionscript 3 比较位图不起作用,actionscript-3,Actionscript 3,我试图比较位图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:BitmapDa
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的像素?
为什么它不返回一个数字
不是百分比,但它应该返回一个可以指定为图像的新BitMapData对象。
BitMapData.compare()
返回对象-如果两个BitmapData对象具有相同的维度(宽度和高度),则该方法将返回一个新的BitmapData对象,该对象在两个对象之间具有差异(请参阅主要讨论)。如果BitmapData对象等效,则该方法返回数字0。如果BitmapData对象的宽度不相等,则该方法返回数字-3。如果BitmapData对象的高度不相等,则该方法返回数字-4
取自
结果:
你的位图是不等价的,这就是为什么你得到一个由两个不同的位图组成的对象
不是百分比,但它应该返回一个可以指定为图像的新BitMapData对象。
BitMapData.compare()
返回对象-如果两个BitmapData对象具有相同的维度(宽度和高度),则该方法将返回一个新的BitmapData对象,该对象在两个对象之间具有差异(请参阅主要讨论)。如果BitmapData对象等效,则该方法返回数字0。如果BitmapData对象的宽度不相等,则该方法返回数字-3。如果BitmapData对象的高度不相等,则该方法返回数字-4
取自
结果:
你的位图是不等价的,这就是为什么你得到一个由两个不同的位图组成的对象
你试过了吗
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
}
未经测试的代码,但应使您走上正确的道路您尝试过吗
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
}
未经测试的代码,但应该使您走上正确的道路如何将其指定为其他内容的图像?我有点困惑,它被屏蔽了,还没有完全被释放,为什么它还返回这个呢?首先你做
bmd1.draw(scratch_c)第二个bmd2.draw(backgr)上的code>代码>。在我看来,这就是BitmapData差异的原因。希望我能帮助你。嗯,我只是为了测试的目的,我又加了一张同样的照片,没有把它放在舞台上。它确实返回0。。现在我的问题变成了…只有在知道整个图像被揭穿或辱骂之后,我如何才能比较它们。。我只想将遮罩的图像部分与整体进行比较,如果返回0,我希望它这样做。我如何将其指定为其他图像?我有点困惑,它被屏蔽了,还没有完全被释放,为什么它还返回这个呢?首先你做bmd1.draw(scratch_c)第二个bmd2.draw(backgr)上的code>代码>。在我看来,这就是BitmapData差异的原因。希望我能帮助你。嗯,我只是为了测试的目的,我又加了一张同样的照片,没有把它放在舞台上。它确实返回0。。现在我的问题变成了…只有在知道整个图像被揭穿或辱骂之后,我如何才能比较它们。。我只想比较被遮罩的图像部分和整体,如果它返回0,我想让它这样做谢谢你,我做了oce并给出了一个答案,但与我要求的相去甚远。我并没有真的起诉位图,我只是使用了更好的代码来测试遮罩谢谢你,我做了oce并给出了答案,但它离我的要求相去甚远我问的是……我并不是真的把位图放在一起,我只是用了更好的代码来测试掩蔽