Carlatocer
Messages postés4Date d'inscriptionmardi 28 mars 2006StatutMembreDernière intervention25 janvier 2008
-
22 janv. 2008 à 16:00
Carlatocer
Messages postés4Date d'inscriptionmardi 28 mars 2006StatutMembreDernière intervention25 janvier 2008
-
25 janv. 2008 à 08:16
J'ai besoin d'une petit aide sur un assemblage de code.
Effectivement, il y a quelques temps, j'ai décidé de crée un petit lecteur video, avec des miniatures des photos.
Pour ce faire, j'ai pris 2 code trouver sur le net, et je les ait assembler.
J'ai pris un lecteur de video, classique avec 5 bouton chargant des xml avec des videos divers. Ainsi qu'un diaporama photo, avec des miniatures defilant a droite de mon écrans.
Vous avez compris ce que je veux faire, je pense. C'est faire un lecteur video avec les 5 boutons de chargement xml (catégorie), avec les miniatures de chaque video des catégories, dans les miniatures.
Le probléme qui se pose a moi, et la compréhension du code. Voila le morceaux de code que je ne comprend pas.
code diaporama :
//ici on donne la vitesse du mouvement par rapport à la souris
//_root.taille_scene/2 étant le milieu de la scène, là où la vitesse est la plus faible
this.onMouseMove = function() {
this.vitesseMenu = Math.round(-(this._ymouse-_parent.taille_scene/2)/20);
this.pos_souris = this._xmouse;
//trace(this.vitesseMenu);
};
// c'est Math.round qui va éviter le décalage
//et le tremblement des images
//car il arrondit les valeurs
setMenu = function (FileXML) {
largeurBouton = 77;
for (var n = 0; n<FileXML.childNodes.length; n++) {
//for (var n = FileXML.childNodes.length; n>0; n--) {
var Name = "bouton"+n;
//on duplique le bouton qui va contenir les images
var btn = attachMovie ("BTN_miniature", Name, n);
btn._y = n*largeurBouton;
//on lui attribue les chemins correspondants du fichier xml
btn.urlimage_min = FileXML.childNodes[n].attributes.urlimage_min;
btn.numero=n;
}
decalage = n*largeurBouton;
};
Ce code et trés simple et je le comprend assez facilement, la seul chose que je ne comprend pas. C'est le faite, que lorsque je click sur un clip "bouton" crée. Il m'ouvre une url inéxistante. Voici le contenu du xml :
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 24 janv. 2008 à 20:52
Salut,
1- selon ton format de fichier xml , tu as 2 noeuds racines:
- le premier = <?xml version="1.0" encoding="UTF-8"?>
- le second = <content>.....</content>
so lorsque tu lui pasde directement fileXml.firstChild sans meme verifier c'est koi que tu lui passes , automatiquement dans ta boucle la variable childNodes = undefined, tu es chanceux de ne pas faire de boucle infinie.
2- oui il s'agit d'un apppel asynchrone , mais tu peux rajouter dynamiquement une methode a l'objet cree via attachMovie
soit var btn:MovieClip = attachMovie(linkageID,name,depth,init)
tu lui sors alors
btn.onRelease = function()
{
......
}
mais selon ce que tu as dit plus haut tu as deja cette methode so utilise onEnterFrame
btn.onEnterFrame = function()
{
//initialise ta variable qui load l'URL lors du onPress ou du onRelease
delete this.onEnterFrame;
}
3- pour le code sur le clip des boutons soit tu utilises le onRelease(ou le onPress) dans le (2-) directement dans le movieclip , ou tu le tapes en actionscript dans la boucle comme j'ai fait la.
le fait de t'ouvrir une URL suggere que la variable urlimage_min est deja definie dans le movieclip , so utilise le onEnterframe pour t'assurer sa mise a jour. (c'est aussi valable pour les appels de fonctions apres un attachMovie)
resume:
1- pour ton xml ,
if(FileXML==null || !FileXML.hasChildNodes())return;
slider.setMenu(fileXML.childNodes[fileXML.childNodes.length-1]);
2- dans ta boucle utlise plutot
setMenu = function(FileXML_firstChild:XMLNode)
var node:XMLNode = FileXML_firstChild;
var btn:MovieClip = null;
var n:Number = 0;
while(node!=null)
{
btn = attachMovie ("BTN_miniature", String("bouton"+n), n,{_y:n*77});
++n;
btn.onEnterFrame = function()
{
this.urlimage_min = node.attributes.urlimage_min;
delete this.onEnterFrame;
}
node = node.nextSibling;
}
si jamais tu as des pbs, envoie moi ton fla , je le modifie pour toi avec un code clair et commente, pour que tu suive le cheminement ( qui pourrait etre dans un futur proche une maniere de voir les choses en actionscript desormais)
je suis heureux de faire partie d'une grande famille ...!
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 22 janv. 2008 à 17:42
Salut,
1- Comment que tu charges ton xml, et dans kele variable?FileXML est-il de type XML?si oui, est le document , ou est-ce un noeud?
2- tu fais un attachMovie et tout de suite apres tu set des variables , fais attention car le attachMovie est lui aussi un appel asynchrone.
3- c koi le code sur les boutons que tu load?
pourrais-tu nous eclaircir ce 3 points, pour un peu nous aider a t'aider?
merci
je suis heureux de faire partie d'une grande famille ...!
Carlatocer
Messages postés4Date d'inscriptionmardi 28 mars 2006StatutMembreDernière intervention25 janvier 2008 24 janv. 2008 à 17:03
1 : Alors je charge le xml avec ce bout de code :
var friseXML = new XML();
friseXML.ignoreWhite = true;
friseXML.onLoad = function(sucess) {
if (sucess) {
this.play();
slider.setMenu(this.firstChild);
delete friseXML;
}
};
// ne marche pas en local
// supprimer ?time...
friseXML.load("XML_/xml_example.xml");//?time="+Math.random());
C'est le noeud qui est chargé, comme ta pu remarquer
2 : Le probleme de l'asynchronisation et trés importante ici ?
3 : En fait les boutons clip minituare, sont crée lors du chargement du xml, et ce que je cherche a définir, c'est quel bout de code va me permettre de definir une action, lorsque l'on va cliquer sur une miniature. es onPress ?? si oui, ou dois je mettre le code ?? etc...