Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probl?me xml+flash 8

1 réponse
Avatar
Yann Bayo
Bonjour tout le monde,

Je suis en train de r?aliser un diaporama avec Flash 8 et XML.
Le chargement des images se d?roule bien, mais la r?cup?ration des "mailto"
associ?s ? chaque image, ne fonctionne pas.

Le mailto sera attribu? ? un bouton ( ou un clip peut importe ).

Quelqu'un pourrait il me montrer le chemin s'il vous plait?

Merci pour votre aide.

Je vous donne mon code :

stop();
function loadXML(loaded) {
if (loaded) {
xmlNode = this.firstChild;
image = ;
description = ;
url = ;
total = xmlNode.childNodes.length;
for (i=0; i<total; i++) {
image = xmlNode.childNodes.childNodes.firstChild.nodeValue;
description = xmlNode.childNodes.childNodes.firstChild.nodeValue;
url = xmlNode.childNodes.childNodes.attributes.url; // ERREUR JE PENSE
}
firstImage();
} else {
content = "file not loaded!";
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.xml");
/////////////////////////////////////
previous_btn.onRelease = function() {
prevImage();
};
next_btn.onRelease = function() {
nextImage();
};
/////////////////////////////////////
p = 0;
this.onEnterFrame = function() {
filesize = picture.getBytesTotal();
loaded = picture.getBytesLoaded();
preloader._visible = true;
if (loaded != filesize) {
preloader.preload_bar._xscale = 100*loaded/filesize;
} else {
preloader._visible = false;
if (picture._alpha<100) {
picture._alpha += 10;
}
}
};
function nextImage() {
if (p<(total-1)) {
p++;
if (loaded == filesize) {
picture._alpha = 0;
picture.loadMovie(image, 1);
btn.bout.URL =url; // ERREUR JE PENSE
desc_txt.text = description;

picture_num();
}
}
}
function prevImage() {
if (p>0) {
p--;
picture._alpha = 0;
picture.loadMovie(image, 1);
btn.bout.URL =url; // ERREUR JE PENSE
desc_txt.text = description;

picture_num();
}
}
function firstImage() {
if (loaded == filesize) {
picture._alpha = 0;
picture.loadMovie(image, 1);
btn.bout.URL =url; // ERREUR JE PENSE
desc_txt.text = description;

picture_num();
}
}
function picture_num() {
current_pos = p+1;
pos_txt.text = current_pos+" / "+total;
}

Le XML :

Code

<images>
<pic>
<image>images/univers/univers_01.jpg</image>
<caption>Envoyer un mail ? Nicolas</caption>
<url>mailto:tutu@toto.com</url>
</pic>
</images>


Voil?, merci bien ? vous

Yann

1 réponse

Avatar
ekameleon
Hello :)

J'ai pas le temps de tester ton code....

donc pour aller + vite essai de répondre à ces petites questions :

1 - As tu bien encodé ton xml en UTF8 ?

2 - Pourquoi ne mets tu pas un header UTF8 à ton xml ? Il faut le mettre
c'est important en + de l'envoi du xml en UTF8 !

3 - Que te renvoi un trace() dans ton code ? (Il faut avant tout
utiliser des trace pour voir tes erreurs !! là j'en vois aucun dans ton
code... donc commence par nous dire ce qu'il en est sur ta variable url !

4 - Sinon au passage : pense à utiliser des "var" dans tes fonctions,
ainsi les variables locales temporaires seront détruites à la fin de la
fonction... c'est mieux pour libérer la mémoire au fur et à mesure que
tu utilises ton code...

5 - Je vois dans ton code :

> image = ;
> description = ;
> url = ;

Franchement j'ai un doute sur ce type de déclaration avec un = et rien
aprés... autant rien mettre à ce niveau là hein ^_^ Sinon vois ma
remarque au dessus avec le "var" ... et met au moins la valeur null par
exemple...

6 - Dans ton code au niveau de l'url tu cherches à récupérer un
"attributes" et pourtant le contenu est dans le noeud directement ????
tu as bien compris ton code ou tu as fais du copié collé ? Franchement
essai de comprendre le parcours de ton arbre xml car à mon avis tu as
rien compris ^_^

7 - Dans ton code je lis dans la boucle dans la fonction loadXML :

>image = xmlNode.childNodes.childNodes.firstChild.nodeValue;

Là il y a un problème... tu n'utilises pas ta variable i !!!

il faut à mon avis écrire :

var image = xmlNode.childNodes[i].firstChild.nodeValue ;
trace("image : " + image) ; // ici je pense à utiliser un trace

NB : attention ce code est un exemple que j'ai pas testé


8 - Pense à utiliser un peu + les petites variables servant à stocker
les références vers tes noeuds etc.... c'est plus simple de lire un code
avec des raccourcis qu'un code avec toute la notation XML dans tous les
sens à mon avis :)

ex :

var nodes = xmlNode.childNodes ;
var total = nodes.length;
for (var i=0; i<total; i++) {
var image = nodes[i].firstChild.nodeValue;
var description = node[i].firstChild.nodeValue;
var url = nodes[i].firstChild.nodeValue ; // voir point au dessus n°6


Voilà .. en gros plein de truc incohérant dans ton code et à mon avis
avant même de venir poser une question ici tu devrait prendre le temps
de tester noeud par noeud le parcours de ton xml via des trace() un peu
partout ...

EKA+ :)



Yann Bayo a écrit :
Bonjour tout le monde,

Je suis en train de r?aliser un diaporama avec Flash 8 et XML.
Le chargement des images se d?roule bien, mais la r?cup?ration des "mailto"
associ?s ? chaque image, ne fonctionne pas.

Le mailto sera attribu? ? un bouton ( ou un clip peut importe ).

Quelqu'un pourrait il me montrer le chemin s'il vous plait?

Merci pour votre aide.

Je vous donne mon code :

stop();
function loadXML(loaded) {
if (loaded) {
xmlNode = this.firstChild;
image = ;
description = ;
url = ;
total = xmlNode.childNodes.length;
for (i=0; i<total; i++) {
image = xmlNode.childNodes.childNodes.firstChild.nodeValue;
description = xmlNode.childNodes.childNodes.firstChild.nodeValue;
url = xmlNode.childNodes.childNodes.attributes.url; // ERREUR JE PENSE
}
firstImage();
} else {
content = "file not loaded!";
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("images.xml");
/////////////////////////////////////
previous_btn.onRelease = function() {
prevImage();
};
next_btn.onRelease = function() {
nextImage();
};
/////////////////////////////////////
p = 0;
this.onEnterFrame = function() {
filesize = picture.getBytesTotal();
loaded = picture.getBytesLoaded();
preloader._visible = true;
if (loaded != filesize) {
preloader.preload_bar._xscale = 100*loaded/filesize;
} else {
preloader._visible = false;
if (picture._alpha<100) {
picture._alpha += 10;
}
}
};
function nextImage() {
if (p<(total-1)) {
p++;
if (loaded == filesize) {
picture._alpha = 0;
picture.loadMovie(image, 1);
btn.bout.URL =url; // ERREUR JE PENSE
desc_txt.text = description;

picture_num();
}
}
}
function prevImage() {
if (p>0) {
p--;
picture._alpha = 0;
picture.loadMovie(image, 1);
btn.bout.URL =url; // ERREUR JE PENSE
desc_txt.text = description;

picture_num();
}
}
function firstImage() {
if (loaded == filesize) {
picture._alpha = 0;
picture.loadMovie(image, 1);
btn.bout.URL =url; // ERREUR JE PENSE
desc_txt.text = description;

picture_num();
}
}
function picture_num() {
current_pos = p+1;
pos_txt.text = current_pos+" / "+total;
}

Le XML :

Code

<images>
<pic>
<image>images/univers/univers_01.jpg</image>
<caption>Envoyer un mail ? Nicolas</caption>
<url>mailto:</url>
</pic>
</images>


Voil?, merci bien ? vous

Yann