Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Slt a tous, je viens a vous car j'ai un souci avec mon code actionscript

var monXML:XML= new XML();
var monfichier:String="art/idhem/fiche_tech.xml";
var requete:URLRequest= new URLRequest(monfichier);
var loadReq:URLLoader=new URLLoader(requete);
var src_titre:Array=new Array();
var titre:Array=new Array();

loadReq.addEventListener("complete",xmlLoaded);


function xmlLoaded(evt:Event){

	monXML=XML(loadReq.data);

	for(var i:String in monXML..titre){
		src_titre[i] =monXML.titre[i].@source;
		titre[i]= monXML.titre[i];	
		}

}

for (var i:String in src_titre){
	trace(src_titre[1]);
}

alors voila ca c'est mon code.

 

Mon probleme ai que quand je souhaite ecrire les valeur avec la boucle "for in" rien ne se passe.

 

Lorsque j'ecris "trace (src_titre[1])" a l'exterieur de la fonction la sortie est "undifined".

 

Mais quand j'essaye de l'ecrire a l'interieur de ma fonction ca marche mais pourtant quand j'efface leur declaration au depart ca plante.

Bon jsais pas si jme suis bien fait comprendre mais si quelqu'un vois un probleme qu'il me le disent.

 

Merci a tous

 

Viva ZZZZZZZEEEEEEEEEBBBBBBUUUUUUULLLLLLOOOOOOOONNNNNNNN :P:P

  • Modérateurs
Posté(e)

Bonjour Busta,

 

Je ne connais pas ActionScript mais, si l'on en croit img-143620y099g.gifWikipédia, il est basé sur ECMAScript et possède donc une syntaxe semblable à celle de JavaScript. Dans ce type de langages, une variable explicitement définie dans une fonction n'est connue que de cette fonction, et ne peut donc être atteinte de l'extérieur.

 

Il semble que ce soit la source de tes ennuis. Je te suggère de définir les variables concernées dans la routine principale plutôt que dans la fonction. Elles seront alors connues et manipulables de partout... :P

Posté(e)

L'erreur est toute bête : le remplissage du tableau ne se fait que lorsque la fonction xmlLoaded() est appelée, or là elle n'est pas appelée mais rattachée à l'évènement "complete" (rattachement qui, par ailleurs, intervient avant la définition de ladite fonction, ce qui constitue la chose étrange n°2).

 

Ici, nous avons :

- définition d'un tableau

- rattachement de la fonction remplissant le tableau à un évènement

- définition d'une fonction remplissant le tableau

- écriture du contenu du tableau

 

...

 

Il faudrait attendre que l'évènement "complete" soit passé pour tenter de lire le contenu du tableau... Ou il faudrait mettre l'écriture du contenu du tableau dans la fonction qui le remplit... Ou il faudrait définir une fonction qui écrit le contenu du tableau et la rattacher à un évènement dont on est certain qu'il intervient après le remplissage...

Posté(e)

Rebonjour,

J'ai bien tenté de lire le contenue des tableaux apres l'apel de la fonction a la suite de l'evenemnt.

Mais il le deboggeur me dit que les données ne sont pas defini "undifined", alors qu'a l'interieure de la fonction elles le sont. Pourtant mes variable sont declarer à l'exterieur de la fonction.

Dois je d'abord defonir ma fonction et ensuite ajouter mon evenement à mon objet?

Merci

Posté(e)

Oui, y'a un autre truc...

Tu as conservé exactement le même code ?

 

Parce que....

for (var i:String in src_titre){
	trace(src_titre[1]);
}

... ça serait pas plutôt "trace(src_titre[i]);" ?

 

Dois je d'abord defonir ma fonction et ensuite ajouter mon evenement à mon objet?
En fait je n'en sais rien. J'ai trop l'habitude de travailler avec du Javascript qui est interprété à la volée, peut-être que les outils Flash "compilent" d'une certaine façon le code ce qui rend inutile la nécessité de d'abord définir un symbole avant de pouvoir l'utiliser... Cela dit, au niveau de la lecture du code, ça semble plus logique
Posté(e)

franchement jai tous essayer.

eliminer ma fonction et mon evenement pour ne mettre que la boucle "for" et toujour rien.

temps que la fonction trace(src_titre[1]) n'est pas dans ma fonction qui se mets en route avec mon evenement rien ne se mets ds mon tableau.

C'est un peu un truc de fou et franchement ca me soule.

Je precise que je suis novice ds l'art de programmer.

Posté(e) (modifié)

Comme je vous l'ai expliquer je suis novice en programmation et j'aurais voulu savoir tan que j'y suis (kar je me suis debrouiller autrement pour mon script), si le script ce dessous et bien construit ou si il y a des amélioration a faire (sachant qu'il n'est pas fini et qu'il me servira pour un lecteur sur un site de musique);

Je vous remercie pour votre aide. :P

 

//variable pour le fichier XML
var monXML:XML= new XML();
var monfichier:String="art/idhem/fiche_tech.xml";
var requete:URLRequest= new URLRequest(monfichier);
var loadReq:URLLoader=new URLLoader(requete);

//variables pour le stockage des données XML
var src_titre:Array=new Array();
var titre:Array=new Array();

//variable pour l'objet son et tous ce qui y touchz
var maMusique:Sound=new Sound();
var canal:SoundChannel=new SoundChannel();
var chanson_encour:String=new String();
var titre_encour:String=new String();
var T:uint=0;


loadReq.addEventListener("complete",xmlLoaded);
_play.addEventListener(MouseEvent.CLICK,lecture);
_stop.addEventListener(MouseEvent.CLICK,arret);
_pause.addEventListener(MouseEvent.CLICK,Pause);
_prev.addEventListener(MouseEvent.CLICK,prev);
_next.addEventListener(MouseEvent.CLICK,Next);	


//declaration des fonctions	
function xmlLoaded(evt:Event){
	monXML=XML(loadReq.data);

	for(var i:String in monXML..titre){
	src_titre[i]=monXML.titre[i].@sourc;
	titre[i]=monXML.titre[i];	
	}
}

//fonction de navigation
function lecture(evt:MouseEvent){
lecture2();
}

function arret(evt:MouseEvent){
	canal.stop();
}

function Pause(evt:MouseEvent){
	titre_chanson.text="pause";
}

function prev(evt:MouseEvent){
	if(T==0){
	T=src_titre.length-1;
	lecture2();}
	else{
	T--;
	lecture2();
	}
}

function Next(evt:MouseEvent){
if(T==src_titre.length-1){
	T=0;
	lecture2();}
	else{
	T++;
	lecture2();
	}
}

function lecture2(){
	canal.stop();
	chanson_encour=src_titre[T];
	titre_encour=titre[T];
	titre_chanson.text=titre_encour;
	maMusique=new Sound(new URLRequest(chanson_encour));
	canal=maMusique.play();

Modifié par KewlCat
Utilisation de la balise [ code ]

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...