cs_Miss1
Messages postés221Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention22 décembre 2010
-
3 mai 2007 à 11:29
cs_Miss1
Messages postés221Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention22 décembre 2010
-
3 mai 2007 à 15:54
Comme la question que j'avais poser n'a pas recu de réponse je la repose de nouveau.
J'ai decidé de crée un album photo , ce qui se passe c'est que ma premier photo se redimmensionne et se possitionne dans le clip, se qui n'est pas le cas pour les suivantes qui reste en taille réel.
Je n'arrive pas a trouver d'ou viens mon probleme donc si on pouvais m'aider se serai gentil
voici mon code:
//declaration XML
photos_xml = new XML();
photos_xml.ignoreWhite = true;
// fonction
photos_xml.onLoad = function(ok)
{
//initialisation des variables
if (ok) {
noeuds = photos_xml.firstChild.childNodes;
// on se positionne au second niveau
nbrPhotos = noeuds.length;
// on récupère le nombre de noeuds à ce niveau
premierePhoto = this.firstChild.firstChild;
// on sélectionne le premier noeud
dernierePhoto = this.firstChild.lastChild;
// position de l'image
// on sélectionne le dernier noeud
enCours = premierePhoto;
// enCours correspond au noeud en cours d'affichage
// ici, la premiere photo sera donc la premiere affichée
affichePhoto(enCours);
// on affiche la photo du premier noeud
}
};
//charegement du fichier XML
photos_xml.load("photos.xml");
// affichage de la photo
function affichePhoto(photo) {
//là il se passe que photo.attributes.fichier
//remplace Ecran et prend toutes ses caractéristiques, _x, _y, _rotation etc..
//on crée le clip vide dans lequel on va loader notre image (on le nomme container et on lui donne la première profondeur libre)
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
//on loade notre image (ou notre swf) dans le clip vide
conteneur.loadMovie(photo.attributes.fichier);
//à chaque fps, un événement enterFrame est déclenché par flash, on définit un écouteur sur cet événement : à chaque fps, le code entre { } va être exécuté (ce qui va nous permettre de tester à chaque passage si le chargement est fini ou pas).
this.onEnterFrame = function():Void {
//on définit une variable 18;charge19; dans laquelle on met le nombre de bytes qui ont déjà été chargés par le loadMovie (dans le clip conteneur)
var total:Number = conteneur.getBytesTotal();
//on définit une variable 18;total19; dans laquelle on stocke le nombre de bytes total de notre image (ou swf)
var charge:Number = conteneur.getBytesLoaded();
//on calcule le pourcentage chargé (arrondi avec le Math.round) et on le stocke dans la variable 18;pourcent19;
var pourcent:Number = Math.round(charge/total*100);
//on teste si le pourcentage = 100 pour savoir si le chargement est terminé
if (pourcent == 100) {
//si oui, le chargement est fini, on supprime l19;écouteur pour ne plus exécuter tout ça
delete this.onEnterFrame;
//je place mon image dans le clip.
conteneur._x = 133.0;
conteneur._y = 78.0;
//ici je redimensionne les images
conteneur._width = 317.9;
conteneur._height= 256.0;
}else{
//ici le chargement n19;est pas terminé, on peut par exemple faire progresser une progressbar (en fonction de la valeur de 18;pourcent19; pour montrer l19;avancement du chargement.
}}
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 3 mai 2007 à 14:12
Tu met :
conteneur._x = 133.0;
conteneur._y = 78.0;
et
conteneur._width = 317.9;
conteneur._height= 256.0;
alors que le clip vide que tu as créé via createEmptyMovieClip (); est nommé "container".
Alors soit change
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
en
var conteneur:MovieClip = this.createEmptyMovieClip("conteneur", this.getNextHighestDepth());
Soit change"conteneur" en "container" de tes position _x et _y, et _width et height
Orange73
Messages postés1375Date d'inscriptiondimanche 28 novembre 2004StatutMembreDernière intervention 2 août 2011 3 mai 2007 à 15:16
Essaye sa :
/declaration XML
photos_xml = new XML();
photos_xml.ignoreWhite = true;
// fonction
photos_xml.onLoad = function(ok) {
//initialisation des variables
if (ok) {
noeuds = photos_xml.firstChild.childNodes;
// on se positionne au second niveau
nbrPhotos = noeuds.length;
// on récupère le nombre de noeuds à ce niveau
premierePhoto = this.firstChild.firstChild;
// on sélectionne le premier noeud
dernierePhoto = this.firstChild.lastChild;
// position de l'image
// on sélectionne le dernier noeud
enCours = premierePhoto;
// enCours correspond au noeud en cours d'affichage
// ici, la premiere photo sera donc la premiere affichée
affichePhoto(enCours);
// on affiche la photo du premier noeud
}
};
//charegement du fichier XML
photos_xml.load("photos.xml");
// affichage de la photo
function affichePhoto(photo) {
//là il se passe que photo.attributes.fichier
//remplace Ecran et prend toutes ses caractéristiques, _x, _y, _rotation etc..
//on crée le clip vide dans lequel on va loader notre image (on le nomme container et on lui donne la première profondeur libre)
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
//on loade notre image (ou notre swf) dans le clip vide
conteneur.loadMovie(photo.attributes.fichier);
//à
chaque fps, un événement enterFrame est déclenché par flash, on définit
un écouteur sur cet événement : à chaque fps, le code entre { } va être
exécuté (ce qui va nous permettre de tester à chaque passage si le
chargement est fini ou pas).
this.onEnterFrame = function():Void {
//on
définit une variable 18;charge19; dans laquelle on met le nombre de bytes
qui ont déjà été chargés par le loadMovie (dans le clip conteneur)
var total:Number = conteneur.getBytesTotal();
//on définit une variable 18;total19; dans laquelle on stocke le nombre de bytes total de notre image (ou swf)
var charge:Number = conteneur.getBytesLoaded();
//on calcule le pourcentage chargé (arrondi avec le Math.round) et on le stocke dans la variable 18;pourcent19;
var pourcent:Number = Math.round(charge/total*100);
//on teste si le pourcentage = 100 pour savoir si le chargement est terminé
if (pourcent == 100) {
//si oui, le chargement est fini, on supprime l19;écouteur pour ne plus exécuter tout ça
delete this.onEnterFrame;
//je place mon image dans le clip.
container._x = 133.0;
container._y = 78.0;
//ici je redimensionne les images
container._width = 317.9;
container._height= 256.0;
}else{
//ici
le chargement n19;est pas terminé, on peut par exemple faire progresser
une progressbar (en fonction de la valeur de 18;pourcent19; pour montrer
l19;avancement du chargement.
}}
Darkrats
Messages postés212Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention12 mai 20081 3 mai 2007 à 15:27
Salut,
Désolé de ne pas avoir répondu à ton post précédent.
J'ai regardé ton code, en fait, je n'arrive même pas à comprendre comment tu arrives à afficher les images suivantes car tu ne lances la fonction "afficherPhoto" qu'une seule fois !
Le principe que tu dois appliquer pour tes images est celui ci :
<li>tu dois ajouter une photo</li><li>attendre le chargement de cette image</li><li>une fois chargée, tu la retouches (redimension etc ... ce que tu veux)</li><li>une fois modifiée, tu relances l'affichage pour la photo suivante</li>Voici ton code, je mets en couleur les ajouts que j'ai effectués
Code : //declaration XML
photos_xml = new XML();
photos_xml.ignoreWhite = true;
var nbrPhotos :Number = 0;
var numeroPhoto_enCours :Number = 0;
// fonction
photos_xml.onLoad = function(ok){
//initialisation des variables
if (ok) {
noeuds = photos_xml.firstChild.childNodes;
// on se positionne au second niveau
nbrPhotos = noeuds.length;
numeroPhoto = 0;
// on récupère le nombre de noeuds à ce niveau
premierePhoto = this.firstChild.firstChild;
// on sélectionne le premier noeud
dernierePhoto = this.firstChild.lastChild;
// position de l'image
// on sélectionne le dernier noeud
enCours = premierePhoto;
// enCours correspond au noeud en cours d'affichage
// ici, la premiere photo sera donc la premiere affichée
affichePhoto(enCours);
// on affiche la photo du premier noeud
}
};
//charegement du fichier XML
photos_xml.load("photos.xml");
// affichage de la photo
function affichePhoto(photo) {
//là il se passe que photo.attributes.fichier
//remplace Ecran et prend toutes ses caractéristiques, _x, _y, _rotation etc..
//on crée le clip vide dans lequel on va loader notre image (on le nomme container et on lui donne la première profondeur libre)
var conteneur:MovieClip = this.createEmptyMovieClip("container" + numeroPhoto, this.getNextHighestDepth());
//on loade notre image (ou notre swf) dans le clip vide
conteneur.loadMovie(photo.attributes.fichier);
//à chaque fps, un événement enterFrame est déclenché par flash, on définit un écouteur sur cet événement : à chaque fps, le code entre { } va être exécuté (ce qui va nous permettre de tester à chaque passage si le chargement est fini ou pas).
this.onEnterFrame = function():Void {
//on définit une variable 18;charge19; dans laquelle on met le nombre de bytes qui ont déjà été chargés par le loadMovie (dans le clip conteneur)
var total:Number = conteneur.getBytesTotal();
//on définit une variable 18;total19; dans laquelle on stocke le nombre de bytes total de notre image (ou swf)
var charge:Number = conteneur.getBytesLoaded();
//on calcule le pourcentage chargé (arrondi avec le Math.round) et on le stocke dans la variable 18;pourcent19;
var pourcent:Number = Math.round(charge/total*100);
//on teste si le pourcentage = 100 pour savoir si le chargement est terminé
if (pourcent == 100) {
//si oui, le chargement est fini, on supprime l19;écouteur pour ne plus exécuter tout ça
delete this.onEnterFrame;
//je place mon image dans le clip.
conteneur._x = 133.0;
conteneur._y = 78.0;
//ici je redimensionne les images
conteneur._width = 317.9;
conteneur._height= 256.0;
// Relancement de la fonction pour la photo suivante :
if(numeroPhoto_enCours < nbrPhotos){
numeroPhoto_enCours++;
affichePhoto(photos_xml.firstChild[numeroPhoto_enCours]);
}else{
trace("fin du chargement de toutes les images");
}
}else{
//ici le chargement n19;est pas terminé, on peut par exemple faire progresser une progressbar (en fonction de la valeur de 18;pourcent19; pour montrer l19;avancement du chargement.
}
}
textes = photo.attributes.num + "/" + nbrPhotos + " : " + photo.attributes.desc;
}
Fin code
1. Le fait d'initialiser les deux variables en dehors des fonctions me permet de pouvoir les utiliser à l'extérieur de cette fonction.
En effet, une variable créée dans une fonction est effacée une fois que la fonction est finie.
Je sauvegarde donc le numéro du noeud actuellement traîté.
2. Je concatène le numéro du noeud dans le nom du clip créé. Si je ne le fais pas, il va à chaque passage écraser le clip en le recréant.
3. Une fois que l'image est totalement chargée, je vérifie que le noeud sur lequel je travaille n'est pas le dernier. Si c'est le cas, j'arrête le calcul. Dans le cas contraire, je lui demande de traîter le noeud suivant.
Je n'ai pas testé, mais je pense qu'avec ça, ça devrait aller.
A+ et bon codage
--------- Darkrats ---------
la loi est dure mais c'est la loi
-------- Infograpix --------
Vous n’avez pas trouvé la réponse que vous recherchez ?