tailedmouse
tailedmouse

Reputation: 365

Comparing bitmap is not working

I am trying to compare the bitmap 1 to bitmap 2 and if they equal to 0 I want them to do something. so for sake of seeing what it's returning I added a trace. but it seems like it's tracing out something totally different from what I expected. This is the code:

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;
}

This is what it is tracing outTrace:

How can I make it compare the pixels of bmd1 and bmd2? Why is it not returning a number?

Upvotes: 0

Views: 77

Answers (2)

The_asMan
The_asMan

Reputation: 6402

Have you tried

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

However after looking at your code a little more. i think you need to test on the masking not bmd1
So something like this.

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

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

untested code but should put you on the right path

Upvotes: 1

sybear
sybear

Reputation: 7784

Not a percentage but it should return a new BitMapData object that you could assign as an image. BitMapData.compare( )

Returns Object — If the two BitmapData objects have the same dimensions (width and height), the method returns a new BitmapData object that has the difference between the two objects (see the main discussion). If the BitmapData objects are equivalent, the method returns the number 0. If the widths of the BitmapData objects are not equal, the method returns the number -3. If the heights of the BitmapData objects are not equal, the method returns the number -4.

Taken from here

Result:

Your bitmaps are not equivalent, thats why you get an object made of 2 different bitmaps.

Upvotes: 3

Related Questions