私はユーザーがマウスで画面上に図形を描くことを可能にするプログラムを作っています。完了したらボタンを押して終了します。ユーザーはステージの特定の領域を描画し、タイムライン上でこれを制御することができます。ユーザーが描くことができないすべての領域を占めるムービークリップがあります。タイムライン上のムービークリップと、アクションスクリプトに描画されたムービークリップとの衝突検出
ユーザーがボタンを押すと私は、ユーザーが描いた形がmoiveclipに触れていないことをプログラムが確認することを望みます。
//------------------------------DRAW SHAPE------------------------------
private var shape:MovieClip = new MovieClip();
public function startDraw(e:MouseEvent):void {
shape.graphics.moveTo(mouseX, mouseY);
shape.graphics.lineStyle(4, 0x000000, 0.8);
stage.addEventListener(MouseEvent.MOUSE_MOVE, beginDraw);
}
public function beginDraw(e:MouseEvent):void {
shape.graphics.lineTo(mouseX, mouseY);
}
public function stopDraw(e:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_MOVE, beginDraw);
}
//--------------------------CHECK FOR COLLISION---------------------------
public function bclick(e:MouseEvent):void {
if(cd(mcOnTimeline, shape)){
trace("HIT IT");
}else{
trace("DIDNT HIT");
}
}
public function cd(mc1:MovieClip, mc2:MovieClip):Boolean{
var mc1Bounds:Object = mc1.getBounds(mc1);
var mc2Bounds:Object = mc2.getBounds(mc1);
//return(mc1Bounds.intersects(mc2Bounds));
var mc1BmpD = new BitmapData(mc1Bounds.width, mc1Bounds.height, true, 0);
var mc2BmpD = new BitmapData(mc2Bounds.width, mc2Bounds.height, true, 0);
//mc1BmpD.draw(mc1Bounds);
//mc2BmpD.draw(mc2Bounds);
//return(mc1BmpD.intersects(mc2BmpD));
if(mc1BmpD.hitTest(new Point(mc1Bounds.x, mc1Bounds.y), 255, mc2BmpD, new Point(mc2Bounds.x, mc2Bounds.y),255)){
return true;
}
else{
return false;
}
コメントアウトものは異なるものがにしようと試みたアイブです:HERESに私はこれまで持っているもの、私はそれが私がhitTestObject()
を使用傾けるよう考慮にムービークリップの境界線を取ることなく、これを行うにしたいですこの作業を取得します
私はこの行にこれを使用しています。 'mc1BmpD.hitTest' – taranpyper
ああそうです...そうです。 BitmapDatasに何も描画していないコードをもっと見ると、これらのdraw()のコメントを外し、 'mcXBounds'の四角形の代わりにMC自体を渡す必要があります。また、あなたはこれを2回言った: 'getBounds(mc1);'あなたがするつもりはないかもしれない? – case2000