사용자가 마우스로 화면에 도형을 그릴 수있는 프로그램을 만들고 있습니다. 완료되면 단추를 눌러 완료합니다. 사용자는 타임 라인에서이를 제어하기 위해 무대의 특정 영역에만 그림을 그릴 수 있습니다. 사용자가 끌어 올 수있는 모든 공간을 차지하는 무비 클립이 있습니다.타임 라인상의 MovieClip과 액션 스크립트에 그려진 것 사이의 충돌 감지
사용자가 버튼을 누르면 나는 프로그램이 사용자가 그린 모양이 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;
}
주석 처리 된 물건은 여러 가지가 tryed 필자입니다 : heres는 지금까지 무엇을 나는 내가 hitTestObject()
를 사용하지 못할 수 있도록 계정에있는 동영상 클립의 테두리를 복용하지 않고이 작업을 수행 할 수 이 작업을 수행하십시오.
이 줄에이 문자를 사용합니다. 'mc1BmpD.hitTest' – taranpyper
아, 네 ... 그렇습니다. BitmapDatas에 아무것도 그리지 않고 코드에 더 가까이 다가 가면 - 그 draw()를 주석 처리하고 'mcXBounds'Rectangle 대신 MC 자체를 전달해야합니다. 또한 당신은 이것을 두 번 말했습니다 :'getBounds (mc1); – case2000