As3 Alignement image dans clip apres chargement [Résolu]

Signaler
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010
-
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010
-
Bonjour,

Je souhaite charger une image dans un clip.
Si je charge l'image sur la scène, tout va bien.
Si je charge l'image dans un clip, cela m'affiche le quart supérieur gauche de la photo dans le quart inférieur droit de la scène.

var loader:Loader=new Loader;
var url:URLRequest=new URLRequest("./lib/fond.jpg");

loader.load(url);

container.addChild(loader);


Je voudrais que le centre de l'image chargée soit aligné au centre de la scène.??
Merci.

6 réponses

Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
8
oui : modifier les x et y de ton image pour que le coin haut gauche du loader soit au bon endroit.

Pour celà un simple calcul permettrais de le faire facilement :

(largeur de la scène - largeur de l'image) /2 .. de même pour la hauteur.

Peg'
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Je répond en partie à mon messsage :

import fl.transitions.Tween;

var loader:Loader=new Loader;
var url:URLRequest=new URLRequest("./lib/fond.jpg");

var align_x:Tween = new Tween(this.container, "x", null, this.container.x, this.loader.x, 0.5, true);
var align_y:Tween = new Tween(this.container, "y", null, this.container.y, this.loader.y, 0.5, true);

container.addChild(loader);
loader.load(url);


Je souhaiterai avoir le même résultat dans l'effet de transition... ? Merci
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

"sans l'effet de transition"
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
8
Bonjour,

Comme pour 3 questions posées depuis cette fin de semaine : tu dois attendre la fin du chargement de ton image pour pouvoir la centrer.

Comment ? Tout est expliqué dans la doc en ligne de flash, section "chargement d'image externe".

Peg'
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Comme pour 3 questions posées depuis cette fin de semaine
???

Merci, mais c'est le même résultat.
Je n'arrive plus à fair fonctionner le Tween et je voudrais centrer l'image sans transition, y a t'il une autre solution pour centrer l'image ? Merci


// création du conteneur de l'image
var conteneurImage:Loader = new Loader();

// url de l'image à charger
var image:URLRequest=new URLRequest("./lib/fond.jpg");

// Le chargement est terminé
function onComplete(e:Event):void {	

this.container.fond.addChild(conteneurImage);
trace("fini");

}

// Progression du chargement
function onProgress(e:ProgressEvent):void {

trace("en cours");
}

// Evénement progress
conteneurImage.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);

// Evénement complete
conteneurImage.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

// chargement de l'image dans le conteneur
conteneurImage.load(image);



Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Encore merci. J'ai voulu faire compliqué alors que c'est simple.

Je mets le code au cas où d'autres personnes aient le même problème.
Ce code permet de charger une image de fond dynamiquement et d'en modifier la taille en fonction de la résolution du navigateur en gardant le ratio.

Un grand merci à Pegase31.

stage.align = "TL";
stage.scaleMode = "noScale";
stage.showDefaultContextMenu = false;

// création du conteneur de l'image
var conteneurImage:Loader = new Loader();

// url de l'image à charger
var image:URLRequest=new URLRequest("./lib/fond.jpg");

// Le chargement est terminé
function onComplete(e:Event):void {	
// Ajout de l'image sur le calque "fond"
this.container.fond.addChild(conteneurImage);

//Calcul ratio
var fondHeight = container.fond.height / container.fond.width;
var fondWidth = container.fond.width / container.fond.height;

//Modification taille et position image de fond
if ((stage.stageHeight / stage.stageWidth) < fondHeight) {
// Modification taille
conteneurImage.width=stage.stageWidth;
conteneurImage.height=fondHeight * conteneurImage.width;

// positionnement de l'image de fond
this.container.x = (stage.stageWidth - conteneurImage.width) / 2;
this.container.y =(stage.stageHeight - conteneurImage.height) / 2;
} else {
// Modification taille
conteneurImage.height = stage.stageHeight;
conteneurImage.width = fondWidth * conteneurImage.height;

// positionnement de l'image de fond
this.container.x = (stage.stageWidth - conteneurImage.width) / 2;
this.container.y =(stage.stageHeight - conteneurImage.height) / 2;
};
}

// Progression du chargement
function onProgress(e:ProgressEvent):void {
trace("en cours");
}

// Evénement progress
conteneurImage.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);

// Evénement complete
conteneurImage.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

// chargement de l'image dans le conteneur
conteneurImage.load(image);