cs_Miss1
Messages postés221Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention22 décembre 2010
-
2 mai 2007 à 10:49
cs_Miss1
Messages postés221Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention22 décembre 2010
-
2 mai 2007 à 16:18
Bonjour, je debute en flash et surtout en XML.
Je souhaite créer un album photo , pour cela j'ai dans ma page fla crée un clip que j'ai appeler ecran.
Le probleme que j'ai s'est que je n'arrive pas a centrée mon image dans le clip. (Je c'est pas si j'ai était tres explicite)
//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;
// 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) {
loadMovie(photo.attributes.fichier, ecran );
textes = photo.attributes.num + "/" + nbrPhotos + " : " + photo.attributes.desc;
}
Darkrats
Messages postés212Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention12 mai 20081 2 mai 2007 à 13:54
salut,
ton problème vient de là :
conteneur.Ecran._x = (conteneur._width-conteneur.Ecran._width)/2;
conteneur.Ecran._y = (conteneur._height-conteneur.Ecran._height)/2;
Tu n'attends pas que ton image soit chargée dans ton clip avant de modifier sa position.
Ton code est lu plus vite que le chargement de ta photo, ce qui veut dire que Flash reçoit donc cette commande :
conteneur.Ecran._x = (0)/2;
conteneur.Ecran._y = (0)/2;
Pour être sûr que ton image soit correctement chargée avant d'effectuer des manipulations, tu dois utiliser un MovieClipLoader.
Il y a un tuto ici et dans l'aide aussi, évidemment.
Sinon, il doit y avoir une tonne de question sur ce forum qui parle de ton sujet, ... c'est un problème récurant, donc cherche aussi ici.
--------- Darkrats ---------
la loi est dure mais c'est la loi
-------- Infograpix --------
cs_Miss1
Messages postés221Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention22 décembre 2010 2 mai 2007 à 11:54
Petite correction mais cela ne fonctionne toujour pas
loadMovie(photo.attributes.fichier, Ecran);
là il se passe que photo.attributes.fichier remplace Ecran et prend toutes ses caractéristiques, _x, _y, _rotation etc..
donc,pour cela je dois centrer photo.attributes.fichier dans Ecran, il faut que je créer un clip vide et le mettre dedans.
//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) {
loadMovie(photo.attributes.fichier,conteneur.Ecran);
cs_Miss1
Messages postés221Date d'inscriptionvendredi 21 octobre 2005StatutMembreDernière intervention22 décembre 2010 2 mai 2007 à 16:18
Donc sa fonctionne pour la 1 er image mais pas pour les autres elle ne se redimensionnne pas et n se place pas dans le clip. Ya des erreur mais je n'arrive pas a l'ai trouver vu que je ne comprend pas totalement se que sa fais
idemn qu'au dessus
................
//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,conteneur.ecran);
//à 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.
}}