Problème avec tableau

Résolu
cs_saig Messages postés 24 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 23 juin 2006 - 27 févr. 2006 à 11:35
cs_saig Messages postés 24 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 23 juin 2006 - 28 févr. 2006 à 17:10
bonjour,

je demande de l'aide car je bloque completement sur un probleme :

j'ai sur plusieurs swf un bouton qui permet d'enregistrer sur un SharedObject une valeur dans un parametre qui est un tableau :

code du bouton :
////////////////////////////////////////////////////////

this.ajout.onRelease = function(){
var so = SharedObject.getLocal("panier","/");
so.data.panier = [];
so.data.reference = ref;(c'est une variable externe)
so.data.panier[0] = so.data.reference;
so.flush()
}

///////////////////////////////////////////////////////

et j'ai un swf qui affiche le contenu du SharedObject. plus précisement, il affiche le nombre d'éléments qui se trouvent dans le tableau "so.data.panier".

code :

///////////////////////////////////////////////////////

so = SharedObject.getLocal("panier", "/");


this.affichage.text = so.data.panier.length + " articles";

///////////////////////////////////////////////////////

Mais voilà, je n'arrive pas à incrémenter mon tableau, je bloque !
pourriez vous me dire où se trouve(nt) la(les) coquille(s) ???

merci beaucoup de votre aide ...

6 réponses

cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
27 févr. 2006 à 12:17
pour populer ton tableau, il te faut une variable, un numeraire, qui sera incrementer a chaque action.

this.Enregistrer_btn.onPress = function(){
so.data.panier[i+1] = Article1
so.data.compte[i+1] = Prix1
...
}


Peace from Mars
to all human beings
3
cs_saig Messages postés 24 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 23 juin 2006
27 févr. 2006 à 18:41
merci "Cortoh" pour ta solution.

voila ce que j'ai fait : ( sur les boutons "ajouter au panier")
/////////////////////////////////////
var so = SharedObject.getLocal("panier","/");
var i=0
so.data.panier = [];
so.data.reference = "article1";

///////////////////////////////////
this.ajout.onRelease = function(){
so.data.panier[i++] = so.data.reference;
so.flush()
}

///////////////////////////////////

le swf qui affiche le contenu s'incrémente bien :

//////////////////////////////////////////

if(so.data.panier==undefined){
this.panier.text = "0 articles";
}else if(so.data.panier.length>1){
this.panier.text = so.data.panier.length + " articles";
}else
this.panier.text =so.data.panier.length + " article";

////////////////////////////////////////////////

en revanche, lorsque que je passe à un autre article(qui est sur un autre swf) et que je l'ajoute au panier, ça remet le compteur à zero !!! ça ecrase tout...??
Javascript:Insert_Emoticon('/imgs2/smile_sad.gif');
0
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
28 févr. 2006 à 00:26
j'ai utiliser des champs textes pour populer ton movieClip 'panier', a toi de l'adapter. ainsi que des boutons de defilement pour le parcourir, la aussi, tu adaptes.

var so = SharedObject.getLocal( "panier","/" )
//sans cette ligne, il va toujours reinitialiser ton tableau
if( so.data.panier == undefined ){
so.data.panier = [ ]
}

//place un champ texte dans ton clip Panier
function AfficherContenuPanier ( i ){
this.ReferenceArticle.text = "Article " + i
this.ContenuPanier.text = so.data.panier[ i -1]
}
AfficherContenuPanier( so.data.panier.length )

//le bouton d'achat/ fonction a coller sur ton bouton 'Acheter'
function EnregistrerAchat( ){
var i = Number( this.PanneauAffichage.text ) - 1
so.data.panier[ i ] = this.ReferenceArticle.text
so.flush( )
}

//demarrer un nouvel achat / fonction a coller sur ton bouton 'NouvelAchat'
function NouvelArticle ( ) {
this.ReferenceArticle.text = so.data.panier.length + 1
this.ContenuPanier.text = undefined
}

//Afficher les articles dans le panier / fonction a coller sur ton bouton 'Parcourir + '
function DefilementAvant( ){
var i = Numberthis.ReferenceArticle.text ) + 1
if ( i > so.data.panier.length ){
i = so.data.panier.length
}
AfficherPanier( i )
}

//Afficher les articles dans le panier / fonction a coller sur ton bouton 'Parcourir - '
function DefilementArriere( ){
var i = Number( this.ReferenceArticle.text ) - 1
if ( i < 1 ){
i = 1
}
AfficherPanier( i )
}

maintenant, tu peux aussi creer une liste, avec un attachMovie qui afficherait le contenu de ton panier aussi...

var so = SharedObject.getLocal( "panier","/" )
for ( i = 1; i < so.data.panier.length; i++){
this.attachMovie("List", "list" + i , this.getNextHighestDepth())
this."list" + i._y = 10 * i
}
bien sur, tu auras placer dans le clip List la fonction AfficherPanier( i )

bon courage...


Peace from Mars
to all human beings
0
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
28 févr. 2006 à 00:29
bon, j'ai plus les yeux en face des trous: erratum
c'est la fonction AfficherContenuPanier ( i ) et non AfficherPanier( i )
il faut lire:
//Afficher les articles dans le panier / fonction a coller sur ton bouton 'Parcourir + '
function DefilementAvant( ){
var i = Number ( this.ReferenceArticle.text ) + 1
if ( i > so.data.panier.length ){
i = so.data.panier.length
}

je crois que c'est tout


Peace from Mars
to all human beings
0

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

Posez votre question
cs_saig Messages postés 24 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 23 juin 2006
28 févr. 2006 à 10:48
Merci beaucoup Cortoh de ton aide ! j'etais loin du compte...je vais analyser tout ça (car c'est un peu plus compliqué pour moi...) et l'integrer.

je te tiens au courant !

merci encore pour le temps que tu as passé dessus, sympa, variment sympa !
0
cs_saig Messages postés 24 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 23 juin 2006
28 févr. 2006 à 17:10
Salut Cortoh,
si tu n'est pas désesperé, voilà où j'en suis...
bon, je suis désolé, mais je n'y arrive pas !!

mon soucis est que le panier et les boutons d'enregistrement sont tous sur des swf différents. bref j'ai essayé d'appliqué ton code mais en vain...
à priori le code des boutons d'enregistrement marche, mais l'incrementation dans le swf qui affiche le contenu se fait mal ? why !!!!!

dans un swf "panier" j'ai ce code qui affiche le contenu :

so = SharedObject.getLocal("panier", "/");
if(so.data.panier==undefined){
so.data.panier = [];
}
//////////////////////////////////////////
/*affichage du contenu du panier*/
//////////////////////////////////////////

if(so.data.panier<1){
this.panier.text = "0 articles";
}else if(so.data.panier.length>1){
this.panier.text = so.data.panier.length + " articles";
}else
this.panier.text =so.data.panier.length + " article";

**************************************************************

et dans les autres swf, j'ai un bouton qui permet d'ajouter un nouvel article, voila le code :

var so = SharedObject.getLocal("panier","/");
var i=0
so.data.reference = "test";

///////////////////////////////////
this.ajout.onRelease = function(){
so.data.panier[i++] = so.data.reference;
so.flush()
trace(so.data.panier);
}


je pense qu'il ne manque pas grand chose pour que ça marche mais je sais vraiment plus quoi faire !!!???
0
Rejoignez-nous