Flash 时间轴上的MovieClip与actionscript中绘制的MovieClip之间的冲突检测

Flash 时间轴上的MovieClip与actionscript中绘制的MovieClip之间的冲突检测,flash,actionscript-3,actionscript,collision-detection,Flash,Actionscript 3,Actionscript,Collision Detection,我正在制作一个程序,让用户用鼠标在屏幕上绘制形状。完成后,他们按一个按钮完成。用户只允许在舞台的某个区域画画,为了在时间轴上控制这一点,我有一个电影剪辑,它占据了用户不允许画画的所有空间 当用户按下按钮时,我希望程序检查用户绘制的形状是否未接触moiveclip。我希望它这样做时不考虑movieclip的边界,所以我不能使用hitTestObject() 以下是我到目前为止的情况: //------------------------------DRAW SHAPE---------------

我正在制作一个程序,让用户用鼠标在屏幕上绘制形状。完成后,他们按一个按钮完成。用户只允许在舞台的某个区域画画,为了在时间轴上控制这一点,我有一个电影剪辑,它占据了用户不允许画画的所有空间

当用户按下按钮时,我希望程序检查用户绘制的形状是否未接触moiveclip。我希望它这样做时不考虑movieclip的边界,所以我不能使用hitTestObject()

以下是我到目前为止的情况:

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

注释掉的东西是不同的东西,我试图让它工作

我会在绘图时测试;当用户在绘图时(按下鼠标键),测试鼠标x、y是否击中movieclip。如果是,请相应地设置一个标志。

取决于HITHECT形状的复杂性,您可能需要考虑使用BITMADATABASE.HETTEST(),这应该更有效。签出。

我正在这条线上使用它
mc1BmpD.hitTest
Ah yes。。。你也是。仔细查看代码,您没有在BitMapData中绘制任何内容-您需要取消对这些draw()的注释,并传入MCs本身,而不是“mcXBounds”矩形。您也说过两次:
getBounds(mc1)您可能不打算这么做?