Bonjour à tous,
je débute en flash et action script. J'ai récupéré un petit QCM flash que j'ai modifié pour répondre à mes besoins : Le jeu va lire une base de donnée (fichier xml) et poser une série de x questions.
Le xml se présente comme ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <main>
<configuration nb_questions_a_poser="3" />
<question>
<enonce texte="La biographie de Stephen Hawking s'appelle" />
<reponses>
<rep correcte="non" texte="Comme sur des roulettes" commentaire="" />
<rep correcte="oui" texte="L'Incroyable Stephen Hawking" commentaire="" />
<rep correcte="non" texte="Intouchable, livre recemment adapte au cinema" commentaire="Faux, S. Hawkiong ne parle pas" />
<rep correcte="non" texte="Arrête-moi si tu peux" commentaire="" />
</reponses>
</question>
</main> |
je voudrais rajouter un champ img=chemin_vers_mon_image dans la balise
<rep correcte="oui" texte"reponse1" img=chemin_vers_mon_image />
.
et que le flash charge une image à la place (ou à côté) du texte "reponse1"
Et dans l'idéal avoir la possibilité de faire de même dans l'énoncé de la question <enonce texte="question1" img=chemin_vers_mon_image />
voici l'actionScript de lecture du xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| bouton._visible = false;
if (!quizXML.loaded || (getBytesTotal() != getBytesLoaded()))
gotoAndPlay("attente");
else {
//////////////////////////////
// Exploitation fichier XML //
//////////////////////////////
question_temp = new Array();
var x = quizXML.firstChild;
nb_questions = Number(x.childNodes[0].attributes.nb_questions_a_poser);
for (var i = 1; x.childNodes[i]; i++) {
question_temp[i-1] = new Object();
question_temp[i-1].reponse = new Array();
question_temp[i-1].commentaire = new Array();
question_temp[i-1].enonce = x.childNodes[i].childNodes[0].attributes.texte;
for (var j = 0; (x.childNodes[i].childNodes[1].childNodes[j] != undefined); j++) {
noeud = x.childNodes[i].childNodes[1].childNodes[j].attributes;
question_temp[i-1].reponse[j] = noeud.texte;
question_temp[i-1].commentaire[j] = noeud.commentaire;
if (noeud.correcte == "oui")
question_temp[i-1].bonne_reponse = j;
}
}
nb_questions_total = i-1;
//si on souhaite poser plus de questions qu'il
//n'en existe (le fichier XML est foireux!!!),
//on ramène ce nombre à une valeur plausible
if (nb_questions > nb_questions_total)
nb_questions = nb_questions_total;
if (!pas_premiere_fois){
/////////////////////////////////////
// Présentation pour l'utilisateur //
/////////////////////////////////////
stop();
titre.texte = "Presentation";
bouton._visible = true;
bouton.commande.text = "C'est parti !";
presentation.text = "Voyons voir si tu connais bien la sciences...\n\n";
presentation.text += "Tu es pret(e) ? Je vais te poser\n"+nb_questions+" questions, à toi de jouer !";
}
if (modif_questions){
///////////////////////////////////////////////////
// Sélection de nb_questions nouvelles questions //
///////////////////////////////////////////////////
//réinitialisation des marqueurs pour indiquer
//qu'initialement aucune question n'a été choisie
for (i=0; i<question_temp.length; i++)
question_temp[i].choisie = false;
//création nouveau tableau
question = new Array(nb_questions);
for (i=0; i<question.length; i++)
question[i] = new Object();
//remplissage
for (var i=0; i<question.length; i++) {
//on cherche l'indice d'une question pas encore choisie
do
ancien_ind = Math.floor(nb_questions_total*Math.random());
while (question_temp[ancien_ind].choisie);
//on indique que cette question a ete choisie
//pour etre sur de pas la rechoisir par la suite
//sinon on aurait 2 fois la meme question
question_temp[ancien_ind].choisie = true;
//puis on insère la question choisie dans le nouveau tableau
question[i] = question_temp[ancien_ind];
question[i].enonce = (i+1)+"- "+question_temp[ancien_ind].enonce;
}
}
} |
et l'actionScript du jeu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| /////////////////////
// Initialisations //
/////////////////////
stop();
titre.texte = "A toi de jouer";
// on liste les objets CASE pour pouvoir les parcourir au moyen de boucles
cases_liste = [case0, case1, case2, case3];
//on attribue son numero a chaque case
for (i in cases_liste)
cases_liste[i].chiffre = Number(i);
for (i in question)
question[i].rep_user = -1;
numero = 0;
question_suivante();
/////////////////////////////////////////////////////////
// Passage a la question suivante qd appui sur VALIDER //
/////////////////////////////////////////////////////////
function question_suivante() {
valider.useHandCursor = false;
valider.dessus = false;
valider.gotoAndStop("non");
//si on a atteint la derniere questions on passe aux résultats
if (numero>(nb_questions-1))
this.gotoAndStop("resultat");
question_en_cours = question[numero].enonce;
reponses_en_cours.text = "";
//remplissage de l'unique champs de texte qui contient toutes les réponses
for (i=0; (question[numero].reponse[i] != undefined); i++) {
reponses_en_cours.text += question[numero].reponse[i]+"\n";
}
// si ya slmt 2 réponses possibles on masque les 2 dernieres cases
// si ya slmt 3 réponses possibles on masque la derniere case
case2._visible = (reponses_en_cours.textHeight>=126);
case3._visible = (reponses_en_cours.textHeight>=168);
case0.gotoAndStop("non");
case1.gotoAndStop("non");
case2.gotoAndStop("non");
case3.gotoAndStop("non");
numero++;
}
////////////////////////////////////////////////
// Fonction appelée qd on clique sur une case //
////////////////////////////////////////////////
function cocher_case(caseX) {
// si elle n'est pas déjà cochée
if (!caseX.oui) {
question[numero-1].rep_user = caseX.chiffre;
// on decoche toutes les cases sauf celle-là
for (i in cases_liste)
cases_liste[i].gotoAndStop((cases_liste[i] == caseX) ? "oui" : "non");
}
}
//////////////////////////////////////
// Captage des clicks sur les cases //
//////////////////////////////////////
for (i in cases_liste) {
cases_liste[i].onRelease = function() {
// on coche puis on rend actif le bouton de validation
cocher_case(this);
valider.gotoAndStop("oui");
valider.useHandCursor = true;
};
} |
Merci de votre aide
Partager