Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 比较位图不起作用_Actionscript 3 - Fatal编程技术网

Actionscript 3 比较位图不起作用

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

我试图比较位图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的像素? 为什么它不返回一个数字

不是百分比,但它应该返回一个可以指定为图像的新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并给出了答案,但它离我的要求相去甚远我问的是……我并不是真的把位图放在一起,我只是用了更好的代码来测试掩蔽