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 オブジェクトを返す必要があります。BitMapData.compare( )

戻り値オブジェクト — 2 つの BitmapData オブジェクトの寸法 (幅と高さ) が同じ場合、メソッドは 2 つのオブジェクトの違いを持つ新しい BitmapData オブジェクトを返します (主な説明を参照)。BitmapData オブジェクトが等しい場合、メソッドは数値 0 を返します。BitmapData オブジェクトの幅が等しくない場合、メソッドは数値 -3 を返します。BitmapData オブジェクトの高さが等しくない場合、メソッドは数値 -4 を返します。

ここから撮影

結果:

あなたのビットマップは同等ではありません.2つの異なるビットマップで作られたオブジェクトを取得するのはそのためです.

于 2013-02-18T18:41:34.040 に答える