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

Résolu
mapi3 Messages postés 17 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 20 janvier 2010 - 29 sept. 2005 à 00:52
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 - 30 sept. 2005 à 20:51
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

_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
30 sept. 2005 à 20:51
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
3
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
29 sept. 2005 à 01:24
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
0
mapi3 Messages postés 17 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 20 janvier 2010
29 sept. 2005 à 02:10
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
0
dede7983 Messages postés 2 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 29 septembre 2005
29 sept. 2005 à 11:53
et si tu déclarais ta variable taille en variable globale comme ceci :

_global.taille =0 ;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
29 sept. 2005 à 12:52
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
0
mapi3 Messages postés 17 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 20 janvier 2010
29 sept. 2005 à 22:32
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;

}
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
30 sept. 2005 à 14:36
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
0
mapi3 Messages postés 17 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 20 janvier 2010
30 sept. 2005 à 19:50
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
0
Rejoignez-nous