안녕하세요, 저는 최근에 AS3에서 무비 클립을 드래그하려고 시도해 왔지만 적중률 테스트를 수행하는 데 어려움을 겪고 있습니다. 명확히하기 위해 문제는 무비 클립이 드래그 테스트 객체를 쳤을 때 gotoframe() 함수를 실행하지 않는다는 것입니다. initDrag는() 액션 청취자를 추가합니다 : 당신이 객체 떨어져액션 스크립트 3에서 무비 클립 끌기
EndDrag가() 액션 리스너를 제거하면 스테이지에서 객체 MOUSE_UP에 MOUSE_DOWN이 문제가되지 않도록; 당신이 객체
stopADrag에 (이 경우 단계) 다른 프레임
startADrag() 객체가 드래그 할 수있는 내에서 사각형을 만들에 호출되는 startDrag()를 가기 전에 (각 개체에 대해)이 호출() currentObject 객체에서 stopDrag()를 호출합니다 (단, currentObject가 null이 아닌 경우에만 해당).
var currentObject:MovieClip = null;
initDrag(block1);
initDrag(block2);
initDrag(block3);
initDrag(block4);
function initDrag(obj:MovieClip)
{
obj.addEventListener(MouseEvent.MOUSE_DOWN,startADrag);
stage.addEventListener(MouseEvent.MOUSE_UP,stopADrag);
}
function endDrag(obj:MovieClip)
{
obj.removeEventListener(MouseEvent.MOUSE_DOWN,startADrag);
stage.removeEventListener(MouseEvent.MOUSE_UP,stopADrag);
}
function startADrag(e:MouseEvent):void
{
currentObject = (MovieClip)(e.target);
var rect:Rectangle = new Rectangle(0,0,stage.stageWidth - currentObject.width,stage.stageHeight - currentObject.height + 100);
currentObject.startDrag(false,rect);
}
function stopADrag(e:MouseEvent):void
{
if (currentObject != null)
{
currentObject.stopDrag();
}
}
if(block1.hitTestObject(dragtest)){
gotoAndStop("lose");
}
if(block2.hitTestObject(dragtest)){
gotoAndStop(27);
}
if(block3.hitTestObject(dragtest)){
gotoAndStop("lose");
}
if(block4.hitTestObject(dragtest)){
gotoAndStop("lose");
}
어떤 조언이나 답변을 주셔서 감사합니다.
드래그 코드가 정확한 것처럼 보였습니다. 히트 테스트의 문제를 자세히 설명해 주시겠습니까? – Iggy
@Iggy hitTestObject가 프레임을 감지하고 변경하지 않습니다. 따라서 무비 클립을 객체 dragtest로 드래그하면 프레임이 "잃게"변경됩니다. – Trows
하나의 경우 모든 if 문을 이벤트 루프 안에 배치해야합니다. – Iggy