Loubiou
Messages postés150Date d'inscriptionmercredi 26 juin 2002StatutMembreDernière intervention 5 décembre 2008 16 févr. 2006 à 20:24
Oky voici le code pour lire le XML (écrit vite fait)
C1 c2 et c3 sont les cases à cocher.
TabPoids = new Array("0");
TabPrixFR = new Array();
TabPrixDOM = new Array();
TabPrixTOM = new Array();
TabBT = new Array();
initXML = new XML();
initXML.load ("init.xml");
initXML.onLoad = LireInit;
function LireInit(){
_root.charge = this.loaded;
variables = this.firstChild;
liste = this.childNodes[2];//.attributes;
liste2 = this.childNodes[4];//.attributes;
if (liste.nodeName == "forfaits_livraison") {
NbNoeuds=((liste.childNodes.length -1)/2);
N=1;
for (u=1; u<=NbNoeuds; u++){
Vpoids = liste.childNodes[N].attributes.poids_gr;
VprixFR = liste.childNodes[N].attributes.prix_ht_fr;
VprixDOM = liste.childNodes[N].attributes.prix_ht_dom;
VprixTOM = liste.childNodes[N].attributes.prix_ht_tom;
Vpoids = liste.childNodes[N].attributes.poids_gr;
N=N+2;
TabPoids[u] = Vpoids;
TabPrixFR[u] = VprixFR;
TabPrixDOM[u] = VprixDOM;
TabPrixTOM[u] = VprixTOM;
}//for
}//if
}
//------------- le procédure pour lire le poids et calculer le prix en fonction
Forfait = function () {
if (totalPoids>=0){
total.depa="";
for (var p=0; p<=(TabPoids.length-1); p++){
if ((totalPoids >= TabPoids[p]) and (totalPoids <= TabPoids[p+1])){
if (TabPoids[p]==0){//plus petit que 1er poids
id=1;}else{id=p+1;}
if (totalPoids >= TabPoids[TabPoids.length-1]){//poids max
total.depa="Prévoir surcoût"; return total.port=0;
}
if (C1==true) {total.port=TabPrixFR[id];}
if (C2==true) {total.port=TabPrixDOM[id];}
if (C3==true) {total.port=TabPrixTOM[id];}
}//if
}//for
return total.port;
}//>=0
}
// partie run
C1=true; totalPoids = 735; pour le test
Forfait();
//Resultat :
trace(total.port);
Voilà je ne l'ai pas testé ni optimisé car j'ai écrit ça vite fait pour vous donner matière à réflexion. Bien entendu on devrait passer en param à la procédure l'état de C1 C2 et C3 ainsi que le poids total du panier mais encore faut-il créer le panier et en récupérer les infos mais pour créer le panier il faut créer les articles puis les afficher et les lire ... bref faut tout créer.
C'est juste un bout de code en démo.
Merci pour vos encouragements ça me motive pour la suite ;-))
Bye ...
rattus
Messages postés7Date d'inscriptionvendredi 11 juillet 2003StatutMembreDernière intervention16 février 2006 16 févr. 2006 à 17:34
c'est cque j'avais fait, mais ca marche pas. a moins que jme trompe. et comme ca, tu en penses quoi?
pays_txt.text = "FRANCE";
frais2port_txt.text = "0";
frais2port_txt._alpha = 0;
frais2portoffert_txt._alpha = 100;
frais2portoffert_txt._x = frais2port_txt._x;
frais2portoffert_txt.text = "offert";
noya_m
Messages postés23Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention20 février 2007 16 févr. 2006 à 16:53
déja supprime le _root
au lieu de mettre _root.onEnterFrame qui te sort ton trace XX fois, donc la tu vas que tu as une boucle qui va freiner ton application mets un onLoad = function() {
pays_txt.text = pays_txt.text.toUpperCase();
frais2port();
};
rattus
Messages postés7Date d'inscriptionvendredi 11 juillet 2003StatutMembreDernière intervention16 février 2006 16 févr. 2006 à 16:45
Loubiou, ton xml est très bon ! ca m'interesse enorme ce code ! tu m'offres de nouvelles pistes. bravo pour ta boutique, bo boulot.
noya_m, jpensais faire
valide_btn.onRelease=function(){
delete this.onEnterFrame;
...
}
pour valider les "informations" de ce formulaire. et puis, je n'ai pas reussi avec onload à faire qch qui marche, tu veux bien approfondir ton id?
noya_m
Messages postés23Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention20 février 2007 16 févr. 2006 à 14:34
Au lieu de mettre un
_root.onEnterFrame = function() {
pays_txt.text = pays_txt.text.toUpperCase();
frais2port();
};
je mettrerais un OnLoad (sinon boucle ss fin)
Yaya
Loubiou
Messages postés150Date d'inscriptionmercredi 26 juin 2002StatutMembreDernière intervention 5 décembre 2008 15 févr. 2006 à 11:03
Hello !
moi j'ai fait la même chose en fonction du poids du colis et en récupérant le prix depuis un XML
L'avantage c'est qu'il suffit de changer un tarif ou d'ajouter un poids sans recompiler le flash.
Voici le XML (avec les tarifs en vigeur 2006 !)
Côté flash, il faut récupérer les données dans 3 tableaux à 2 dimensions contenant poids en grammes - prix HT
Et suivant le poids du panier par exemple on calcul les frais de transport.
Voir un exemple ici : http://www.toutauto.info/racine/galerie/ventes.html Si ce code vous interesse, je peux le poster dès que j'ai un peu de temps ...
A bientôt ..
16 févr. 2006 à 20:24
C1 c2 et c3 sont les cases à cocher.
TabPoids = new Array("0");
TabPrixFR = new Array();
TabPrixDOM = new Array();
TabPrixTOM = new Array();
TabBT = new Array();
initXML = new XML();
initXML.load ("init.xml");
initXML.onLoad = LireInit;
function LireInit(){
_root.charge = this.loaded;
variables = this.firstChild;
liste = this.childNodes[2];//.attributes;
liste2 = this.childNodes[4];//.attributes;
if (liste.nodeName == "forfaits_livraison") {
NbNoeuds=((liste.childNodes.length -1)/2);
N=1;
for (u=1; u<=NbNoeuds; u++){
Vpoids = liste.childNodes[N].attributes.poids_gr;
VprixFR = liste.childNodes[N].attributes.prix_ht_fr;
VprixDOM = liste.childNodes[N].attributes.prix_ht_dom;
VprixTOM = liste.childNodes[N].attributes.prix_ht_tom;
Vpoids = liste.childNodes[N].attributes.poids_gr;
N=N+2;
TabPoids[u] = Vpoids;
TabPrixFR[u] = VprixFR;
TabPrixDOM[u] = VprixDOM;
TabPrixTOM[u] = VprixTOM;
}//for
}//if
}
//------------- le procédure pour lire le poids et calculer le prix en fonction
Forfait = function () {
if (totalPoids>=0){
total.depa="";
for (var p=0; p<=(TabPoids.length-1); p++){
if ((totalPoids >= TabPoids[p]) and (totalPoids <= TabPoids[p+1])){
if (TabPoids[p]==0){//plus petit que 1er poids
id=1;}else{id=p+1;}
if (totalPoids >= TabPoids[TabPoids.length-1]){//poids max
total.depa="Prévoir surcoût"; return total.port=0;
}
if (C1==true) {total.port=TabPrixFR[id];}
if (C2==true) {total.port=TabPrixDOM[id];}
if (C3==true) {total.port=TabPrixTOM[id];}
}//if
}//for
return total.port;
}//>=0
}
// partie run
C1=true; totalPoids = 735; pour le test
Forfait();
//Resultat :
trace(total.port);
Voilà je ne l'ai pas testé ni optimisé car j'ai écrit ça vite fait pour vous donner matière à réflexion. Bien entendu on devrait passer en param à la procédure l'état de C1 C2 et C3 ainsi que le poids total du panier mais encore faut-il créer le panier et en récupérer les infos mais pour créer le panier il faut créer les articles puis les afficher et les lire ... bref faut tout créer.
C'est juste un bout de code en démo.
Merci pour vos encouragements ça me motive pour la suite ;-))
Bye ...
16 févr. 2006 à 17:34
pays_txt.text = "FRANCE";
frais2port_txt.text = "0";
frais2port_txt._alpha = 0;
frais2portoffert_txt._alpha = 100;
frais2portoffert_txt._x = frais2port_txt._x;
frais2portoffert_txt.text = "offert";
function frais2port() {
.... }
pays_txt.onSetFocus = function() {
_root.onEnterFrame = function() {
pays_txt.text = pays_txt.text.toUpperCase();
frais2port();
};
}
16 févr. 2006 à 16:53
au lieu de mettre _root.onEnterFrame qui te sort ton trace XX fois, donc la tu vas que tu as une boucle qui va freiner ton application mets un onLoad = function() {
pays_txt.text = pays_txt.text.toUpperCase();
frais2port();
};
***************************** A supprimer
_root.onEnterFrame = function() {
pays_txt.text = pays_txt.text.toUpperCase();
frais2port();
};
*****************************
Yaya
www.myflashstore.com
16 févr. 2006 à 16:45
noya_m, jpensais faire
valide_btn.onRelease=function(){
delete this.onEnterFrame;
...
}
pour valider les "informations" de ce formulaire. et puis, je n'ai pas reussi avec onload à faire qch qui marche, tu veux bien approfondir ton id?
16 févr. 2006 à 14:34
_root.onEnterFrame = function() {
pays_txt.text = pays_txt.text.toUpperCase();
frais2port();
};
je mettrerais un OnLoad (sinon boucle ss fin)
Yaya
15 févr. 2006 à 11:03
moi j'ai fait la même chose en fonction du poids du colis et en récupérant le prix depuis un XML
L'avantage c'est qu'il suffit de changer un tarif ou d'ajouter un poids sans recompiler le flash.
Voici le XML (avec les tarifs en vigeur 2006 !)
<?xml version='1.0' encoding='UTF-8' ?>
<forfaits_livraison>
</forfaits_livraison>
Côté flash, il faut récupérer les données dans 3 tableaux à 2 dimensions contenant poids en grammes - prix HT
Et suivant le poids du panier par exemple on calcul les frais de transport.
Voir un exemple ici : http://www.toutauto.info/racine/galerie/ventes.html
Si ce code vous interesse, je peux le poster dès que j'ai un peu de temps ...
A bientôt ..