-1

I am trying to use hitTestObject and enter_frame to create a "Test" page where the user drags an "answer box to another box, and if the answer is correct it displays the word "correct, if not "wrong", but I have four questions (q1) and 4 answers (a1), and after the first answer is entered, it doesn't do anything else, unless I move the square out of the correct answer.

How do I get it to work and ignore previous responses? I'm using the drag/drop commands as well.

-

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 = " ";
    }
}
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Yu Jin
  • 1

1 Answers1

0

Maybe this should help:

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

I make the question and answer into array. And i didn't use ENTER_FRAME..

Faras
  • 59
  • 1
  • 7