hitTest (BitmapData.hitTest メソッド)

public hitTest(firstPoint: Point , firstAlphaThreshold: Number , secondObject: Object , [secondBitmapPoint: Point ], [secondAlphaThreshold: Number ]) : Boolean

1 つのビットマップイメージと、ポイント、矩形、または他のビットマップイメージとの間でピクセルレベルのヒット検出を実行します。ヒットテストを行うとき、どのオブジェクトも伸縮や回転といった変換は考慮されません。

イメージが不透明である場合、このメソッドでは完全に不透明な矩形とみなされます。透過性を考慮するピクセルレベルのヒットテストを実施する場合は、両方のイメージとも透明である必要があります。2 つの透明なイメージをテストする場合、アルファしきい値パラメータによって、アルファチャンネル値 (0 ~ 255) がいくつであれば不透明とみなすかを制御します。

対応バージョン : ActionScript 1.0、Flash Player 8

パラメータ

firstPoint:Point - 現在の BitmapData インスタンスのピクセル位置を定義するポイント。

firstAlphaThreshold:Number - このヒットテストで不透明とみなすアルファチャンネルの最大値。

secondObject:Object - Rectangle、Point、または BitmapData オブジェクト。

secondBitmapPoint:Point (オプション) - 2 番目の BitmapData オブジェクト内のピクセル位置を定義するポイント。このパラメータは、secondObject の値が BitmapData オブジェクトである場合にのみ使用します。

secondAlphaThreshold:Number (オプション) - 2 番目の BitmapData オブジェクト内で不透明であると見なされるアルファチャネルの最大値。このパラメータは、secondObject の値が BitmapData オブジェクトであり、両方の BitmapData オブジェクトが透明である場合にのみ使用します。

戻り値

Boolean - ブール値。ヒットした場合は true を返します。それ以外の場合はfalse を返します。

次の例では、BitmapData オブジェクトが MovieClip と衝突しているかどうかを調べる方法を示します。

import flash.display.BitmapData;
import flash.geom.Point;

var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC);

var mc_1:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc_1.attachBitmap(myBitmapData, this.getNextHighestDepth());

var mc_2:MovieClip = createRectangle(20, 20, 0xFF0000);

var destPoint:Point = new Point(myBitmapData.rectangle.x, myBitmapData.rectangle.y);
var currPoint:Point = new Point();

mc_1.onEnterFrame = function() {
    currPoint.x = mc_2._x;
    currPoint.y = mc_2._y;
    if(myBitmapData.hitTest(destPoint, 255, currPoint)) {
        trace(">> Collision at x:" + currPoint.x + " and y:" + currPoint.y);
    }
}

mc_2.startDrag(true);

function createRectangle(width:Number, height:Number, color:Number):MovieClip {
    var depth:Number = this.getNextHighestDepth();
    var mc:MovieClip = this.createEmptyMovieClip("mc_" + depth, depth);
    mc.beginFill(color);
    mc.lineTo(0, height);
    mc.lineTo(width, height);
    mc.lineTo(width, 0);
    mc.lineTo(0, 0);
    return mc;
}

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001410.html