Au secours, je n'arrive pas à récupérer la taille de mon tableau [Résolu]

Signaler
Messages postés
17
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
20 janvier 2010
-
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
-
Je souhaiterai déterminer la taille du tableau tabimage.
Malheureusement l'objet est inaccessible en dehors de la fonction meme
si je l'ai défini en dehors....

Voici le code:

Merci d'avance



var taille;

tabimage = new Array();<-----------------J'ai l'impression que le langage ne tient pas compte de cette creation

afficheImages();

trace(taille)------------------------------------>renvoie undefined





function afficheImages(){

XMLimage = new XML();

XMLimage.ignoreWhite = true;



XMLimage.onLoad = function(){

// on masque le mc de base

_root.cadre._visible = 0;

//on remplit notre tableau avec toutes les balises comprises dans

tabimage = XMLimage.firstChild.childNodes;


taille=tabimage.length;
<-------------------------------------Le probleme est là. le langage
ne considere pas la meme variable taille que celle définie plus haut

trace(taille); <----------------------------------------------------renvoie bien la taille du tableau

//on va boucler autant de fois qu'il y ai de balises photo

for(i; i<tabimage.length & i<j; i++){

//on duplique notre mc

_root.cadre.duplicateMovieClip("cadre"+i,i*1+5000);

//On cree deux variables: une pour les teens et l'autre pour l'image taille réelle

teen="teens/"+_root.tabimage[i].attributes.urlimage;

_root["cadre"+i].reelle=_root.tabimage[i].attributes.urlimage;

//on attache la photo au mc "glu" (celui qui a une position bizarre)

_root["cadre"+i].glu.loadMovie(teen);

//On cree le lien vers la photo taille réelle

_root["cadre"+i].onRelease = function(){

}

//On ajoute un effet de transparence au survol du mc

_root["cadre"+i].onRollOver = function(){

this._alpha=60;

}

_root["cadre"+i].onRollOut = function(){

this._alpha=100;

}

// on positionne les images et leur cadre de la première ligne

_root["cadre"+i]._y = Number(_root["cadre"+(i-1)]._y)+110

_root["cadre"+i]._x = _root["cadre"+(i-1)]._x;

}

}

XMLimage.load("album.xml");

stop();

}

8 réponses

Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
Salut

faut que tu definise un onEnterFrame sur chaque nouveau clip, du genre :

onEnterFrame = function(){

var pc = this.getByteLoaded()*100/this.getBytesTotal();

// tu peux faire ce que tu veux de pc, l'afficher, faire grandir une barre de chargement, ....

if (pc >= 100){

delete onEnterFrame;

}

}

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
Salut

parcours ton noeud et ajoute les info manuellement dans tabimage (avec un while et un push) :)

car childNodes comporte d'autre variable comme les attributs du noeuds

++

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
Messages postés
17
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
20 janvier 2010

Tu penses que le probleme vient de quoi???? de la boucle for???

Pourquoi des qu'on sort de la fonction XMLimage.onLoad la variable
taille n'existe plus alors qu'elle renvoyait la bonne valeur.????

Merci encore
Messages postés
2
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
29 septembre 2005

et si tu déclarais ta variable taille en variable globale comme ceci :

_global.taille =0 ;
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
Salut

nan t'as pas lu

le prob vient du fait que le childNodes, c'est pas un simple tableau il
y a plus d'info dedans que les enregistrement, comme les attribut du
noeud xml ...

c'est donc pas la boucle for qui deconne

juste, au lieu de faire tabimage = ...childNodes

fait une boucle pour parcourir le childnodes et remplir ton tableau tabimage

tu comprends pas ?

Flash sans Limites
_Benjy chez kOlapsis

merci de penser a accepter
Messages postés
17
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
20 janvier 2010

Ca y'est j'ai compris. Le probleme est que la monXML.onLoad se charge en dernier.

Dans le panneau de sortie, le trace 2 sort avant le 1 alors que c'est censé etre l'inverse....

Par contre tout ceci ne résolut pas mon probleme.

COmment ne pas utiliser monXML.onLoad=function()????







_global.tabImage= new Array();

chargerDocXML("album.xml");

trace("2: "+tabImage.length);



function chargerDocXML(source){

tabImage=new Array();

monXML=new XML();

monXML.ignoreWhite = true;

monXML.load(source);

monXML.onLoad = function(succes){

//on remplit notre tableau avec
toutes les balises comprises dans

//tabImage = new Array();

for(i=0;
i<monXML.firstChild.childNodes.length; i++){
<<<<--------C ce que tu voulais????

tabImage.push(monXML.firstChild.childNodes[i]);

}

creationsMC(tabImage);

trace("1: "+tabImage.length);

}

stop;

}
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
Salut

le onLoad sert justement
parce qu'il y a un temps de latence entre ton insctruction load et le
moment ou le fichie ret chargé (faut bien le charger ...)

donc fait une autre fonction, je sais pas moi, apreschargement() qui
fera tes actions voulu apres le chargment et tu l'appel dans à la finc
du onLoad



_global.tabImage= new Array();

chargerDocXML("album.xml");



function chargerDocXML(source){

tabImage=new Array();

monXML=new XML();

monXML.ignoreWhite = true;

monXML.load(source);

monXML.onLoad = function(succes){

//on remplit notre tableau avec
toutes les balises comprises dans kOlapsis

merci de penser a accepter
Messages postés
17
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
20 janvier 2010

Effectivement, ca marche nickel. Je commence à comprendre les subtilités du langage!!!!

Un grand merci.

Par contre j'arrive pas à faire un loader pour chaque chargement d'image, mais ca c moins grave...

Pour le lien: http://mapi3.free.fr/Photos/Challenge2005/Album_Challenge2005.htm