IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 1 & ActionScript 2 Discussion :

Charger une image à partir d'un xml


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2011
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Charger une image à partir d'un xml
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Charger une image à partir d'une collection d'images
    Par toutounesan dans le forum VB.NET
    Réponses: 34
    Dernier message: 15/06/2011, 11h16
  2. comment charger une image à partir de vignettes ?
    Par ml1234 dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 28/05/2009, 08h17
  3. Réponses: 1
    Dernier message: 18/04/2009, 23h15
  4. Charger une image à partir d'une chaine HEXA
    Par Argonz dans le forum Delphi
    Réponses: 4
    Dernier message: 15/03/2007, 08h38
  5. [Image] charger une image depuis un fichier xml.
    Par Invité dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 21/11/2006, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo