Ecouteur d'évènement

Résolu
cefar Messages postés 19 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 28 avril 2008 - 10 janv. 2007 à 16:56
cefar Messages postés 19 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 28 avril 2008 - 11 janv. 2007 à 09:16
Bonjour tout le monde,

travail en cours :
je développe un quizz dynamique : le fichier xml est généré par un script php qui interroge la base de données des questions.
Le fichier xml comporte 10 questions, et les réponses associées dont le nombre varie.

L'affichage de la question est dans un textArea, le choix des réponses avec des radioButton, et il y a un bouton suivant.

Mon problème est le suivant :
l'écouteur des radioButton ne fonctionne pas dans ce programme, alors
que le même écouteur dans un simple fla avec quelques radioButton placés
manuellement fonctionne parfaitement.

Il existe également un écouteur pour le bouton suivant qui fonctionne également correctement.

Y-aurait-il une âme charitable pour essayer de m'expliquer l'erreur de mon code. (joint ci-dessous)

Merci d'avance

Rudy

import mx.controls.RadioButton;
import mx.controls.TextArea;
import mx.controls.Button;
var score:Number = 0;
var question:Number = 0;
var pointResultat:Number = -1;
// --------------------- Chargement du fichier xml -----------------------------------
var chargeQcm:XML = new XML();
chargeQcm.load("qcm.xml");
chargeQcm.ignoreWhite = true;
chargeQcm.onLoad = function(ok:Boolean):Void {
    if(ok) afficherQuestion();
    else trace("Chargment du fichier xml raté !");
}
// ---------------------- affichage de la question N --------------------------------
function afficherQuestion() {
    // --- affichage de la question
    var tQuestion:TextArea = this.createClassChildAtDepth(TextArea,DepthManager.kTop);
    tQuestion._x = 10;
    tQuestion._y = 10;
    tQuestion._width = 350;
    tquestion._height = 60;
    tQuestion.editable = false;
    tQuestion.html = true;
    tQuestion.wordWrap = true;
    tQuestion.text = "Question-"+(question+1)+". "+chargeQcm.childNodes[0].childNodes[question].attributes.intitule;
    // ---- récupère le nombre de réponse -----------
    var nbNoeud:Number = chargeQcm.childNodes[0].childNodes[question].childNodes.length;
    var i=0;
    // ---- affiche chaque réponse dans un radio button + text Area ---------
    while(i<nbNoeud) {
        this["tRep"+i] = this.createClassChildAtDepth(TextArea,DepthManager.kTop);
        this["tRep"+i]._x = 50;
        this["tRep"+i]._y = 60 + i*30;
        this["tRep"+i]._width = 300;
        this["tRep"+i]._height = 60;
        this["tRep"+i].editable = false;
        this["tRep"+i].html = true;
        this["tRep"+i].wordWrap = true;
        this["tRep"+i].text = chargeQcm.childNodes[0].childNodes[question].childNodes[i].firstChild;       
        this["btnRep"+i] = this.createClassChildAtDepth(RadioButton,DepthManager.kTop);
        this["btnRep"+i]._x = -60;
        this["btnRep"+i]._y = 65 + i*30;
        this["btnRep"+i].labelPlacement = "left";
        this["btnRep"+i].label = "R-"+(i+1);
        this["btnRep"+i].groupName = "radioGroup";
        this["btnRep"+i].data = chargeQcm.childNodes[0].childNodes[question].childNodes[i].attributes.point;
        i++;
    }
   
}
// -------------- Placement du bouton suivant ------------------------
var btn_Suivant:Button = createClassChildAtDepth(Button,DepthManager.kTop);
btn_Suivant.label = "Suivant";
btn_Suivant._x = 320;
btn_Suivant._y = 270;
btn_Suivant._width = 3;
btn_Suivant._height = 4;
// -------------------- Ecouteur radioButton ------------------
var radioButtonListener:Object = new Object();
radioButtonListener.click = function (evt:Object):Void{
    trace("Ecouteur radio fonctionne");
    pointResultat = evt.target.selectedData;
}
radioGroup.addEventListener("click",radioButtonListener);
// ----------------------- Ecouteur Bouton Suivant --------------------
var buttonListener:Object = new Object();
buttonListener.click = function(evt:Object):Void{
    if(pointResultat!=-1){
        score+=pointResultat;
        pointResultat=-1;
        question++;
        if(question<chargeQcm.childNodes[0].childNodes.lenght){ afficherQuestion(); }
        else { trace("Fin du QCM."); }
    }
}
btn_Suivant.addEventListener("click", buttonListener);

1 réponse

cefar Messages postés 19 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 28 avril 2008
11 janv. 2007 à 09:16
Bonjour,

la solution de mon problème m'a été communiqué :

la ligne de code : radioGroup.addEventListener("click",radioButtonListener);
n'est pas au bon endroit, car radioGroup^n'est pas encore définit.

je doit mettre cette ligne après ma boucle while dans afficherQuiestion()

Bonne journée
3
Rejoignez-nous