2012-12-17 2 views
-1

hitTestObject 및 enter_frame을 사용하여 사용자가 "응답"상자를 다른 상자로 드래그하고 "답변"이 올바른 경우 "테스트"페이지를 만들려고합니다. 올바른지, "틀린"것은 아니지만 네 가지 질문 (q1)과 네 가지 대답 (a1)이 있으며 첫 번째 대답을 입력 한 후에 정답에서 정사각형을 이동하지 않으면 다른 작업을 수행하지 않습니다.ActionScript에서 'if'문과 함께 hitTestObject 사용

이전 응답을 무시하고 작동 시키려면 어떻게해야합니까? 드래그/드롭 명령도 사용하고 있습니다.

-

finalTest.addEventListener(Event.ENTER_FRAME, detectCollision); 

function detectCollision (evt: Event) : void { 
    if(a1.hitTestObject(q1)) { 
     finalTest.checkText.text = "Correct answer"; 
    } 
    else if(a1.hitTestObject(q2)) { 
     finalTest.checkText.text = "wrong"; 
    } 
    else if(a1.hitTestObject(q3)) { 
     finalTest.checkText.text = "wrong"; 
    } 
    else if(a1.hitTestObject(q4)) { 
     finalTest.checkText.text = "wrong"; 
    } 

    else if(a2.hitTestObject(q2)) { 
     finalTest.checkText.text = "Correct answer"; 
    } 
    else if(a2.hitTestObject(q1)) { 
     finalTest.checkText.text = "wrong"; 
    } 
    else if(a2.hitTestObject(q3)) { 
     finalTest.checkText.text = "wrong"; 
    } 
    else if(a2.hitTestObject(q4)) { 
     finalTest.checkText.text = "wrong"; 
    } 

    else if(a3.hitTestObject(q3)) { 
     finalTest.checkText.text = "Correct answer"; 
    } 
    else if(a3.hitTestObject(q1)) { 
     finalTest.checkText.text = "wrong"; 
    } 
    else if(a3.hitTestObject(q2)) { 
     finalTest.checkText.text = "wrong"; 
    } 
    else if(a3.hitTestObject(q4)) { 
     finalTest.checkText.text = "wrong"; 
    } 

    else if(a4.hitTestObject(q4)) { 
     finalTest.checkText.text = "Correct answer"; 
    } 
    else if(a4.hitTestObject(q1)) { 
     finalTest.checkText.text = "wrong"; 
    } 
    else if(a4.hitTestObject(q2)) { 
     finalTest.checkText.text = "wrong"; 
    } 
    else if(a4.hitTestObject(q3)) { 
     finalTest.checkText.text = "wrong"; 
    } 
    else { 
     finalTest.checkText.text = " "; 
    } 
} 

답변

0

아마이 도움이 될 것입니다

var questionArray:Array = new Array(q1,q2,q3,q4); 
var answerArray:Array = new Array(a1,a2,a3,a4); 

var checkId:int = 0; 

for(var i:int = 0; i<answerArray.length; i++) { 
    answerArray[i].ids = i; 
    answerArray[i].addEventListener(MouseEvent.MOUSE_DOWN, onDragHandler); 
    answerArray[i].addEventListener(MouseEvent.MOUSE_UP, onReleaseHandler); 
} 

function onDragHandler(e:MouseEvent) { 
    e.currentTarget.startDrag(); 
    checkId = e.currentTarget.ids; 
} 

function onReleaseHandler(e:MouseEvent) { 
    e.currentTarget.stopDrag(); 
    if(e.currentTarget.hitTestObject(questionArray[checkId])) { 
     finalTest.checkText.text = "Correct Answer"; 
    } else { 
     finalTest.checkText.text = "Wrong"; 
    } 
} 

내가 질문을하고 배열로 대답합니다. 그리고 나는 사용하지 않았다 ENTER_FRAME ..

관련 문제