Redimensionnement automatique d'un moviecliploader (jpg ou swf) en respectant le ratio de l'image

Soyez le premier à donner votre avis sur cette source.

Vue 18 611 fois - Téléchargée 3 065 fois

Description

Ce FLA permet lors d'un moviecliploader de redimensionner correctement son image ou animation flash.

N'hésiter pas à les emboîter les uns sur les autres.

Je suis sur quand peut l'améliorer en automatisant certains calculs, mais je l'ai vite fait pour un stage.

C'est mon premier fichier source, alors soyez indulgent, merci.

L'avantage de celui-ci, c'est qu'elle fonctionne tjs.

Source / Exemple :


//fonction qui doit en théorie forcer le respect du rapport, mais j'ai pas bien compris. 
Stage.scaleMode = "noScale";

//Cette fonction permet de redimensionner la fenêtre en respectant le rapport hauteur/largeur
function position(){
	//rapport hauteur/largeur de l'anim chargé
	rapport=1024/768;
	//rapport du swf, il faut qu'elle soit du même rapport que l'animation charger.
	rapport2=Stage.width/Stage.height;
	
	//si l'animation chargé est carré
	if (rapport==rapport2){
	
	_root.tester_mc._height = Stage.height;
	_root.tester_mc._width = Stage.width;
	
	}
	//donc largeur de l'anim est plus importante que la hauteur au redim.
	else if(rapport>rapport2){
	
	_root.tester_mc._width = Stage.width;
	_root.tester_mc._height = _root.tester_mc._width/rapport;

	}
	//idem mais opposé
	else {
	_root.tester_mc._height = Stage.height;
	_root.tester_mc._width = rapport*_root.tester_mc._height;

	}
	//on repositionne la fenêtre en haut à gauche
	//800 pour largeur du swf et 600  pour sa hauteur
_root.tester_mc._x=(800-Stage.width)/2;
_root.tester_mc._y=(600-Stage.height)/2;

}

//demande d'aligner l'animation au centre, ici ne sert à rien vu que je redirige mon animation par des calculs dans le coin en haut à gauche
Stage.align = "C";

//MovieClip qui va contenir le swf ou jpg chargé
this.createEmptyMovieClip("tester_mc", 1);
//Ecouteur qui permet de redimensionner l'animation à la taille de la fenêtre au chargement
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip) {
	trace("movie loaded");
	//pourcentage de mon animation, trouver par ce calcul:
	//  100x800/1024 -> il s'agit d'un produit en croix, 100 de 100%, 800 de la taille de mon swf et 1024 de la taille de mon anim_loader
	target_mc._xscale = 78.125;
	target_mc._yscale = 78.125;
	

};

//MovieCLip qui va contenir le conteneur tester_mc
var image_mcl:MovieClipLoader = new MovieClipLoader();
//on applique l'écouteur au chargement de l'animation
image_mcl.addListener(mclListener);
//on charge l'animation
image_mcl.loadClip("anim_loader.swf", tester_mc);

//on ajoute un écouteur pour voir si on redimensionne la fenêtre et si c'est le cas on lance la fonction position()
var ecout:Object = new Object();
ecout.onResize = function() {
	
 position();
	
	
};
//on met l'écouteur du redim. sur la fenêtre
Stage.addListener(ecout);

Conclusion :


Il vous suffit d'aller sur la première image du calque 1 et de modifier les valeurs pour votre animation.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
13
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
31 octobre 2008

Bonjour,
j'ai essayer d'adapter ton code à ma façon et rien à faire on dirait que l'écouteur ne fonctionne pas =/
voici mon code :

Stage.scaleMode = "noScale";

loader._x = (stage.width/2)+52;
loader._y = (stage.height/2)+11;
bt_menu._x = 20;
bt_menu._y = stage.height-20;

loader._visible = flase;
loader.stop();

function position() {
loader._x = (stage.width/2)+52;
loader._y = (stage.height/2)+11;
bt_menu._x = 20;
bt_menu._y = stage.height-20;
}
var ecout:Object = new Object();
ecout.onResize = function() {
position();
};
Stage.addListener(ecout);
Messages postés
58
Date d'inscription
lundi 26 janvier 2004
Statut
Membre
Dernière intervention
14 novembre 2006

Si jamais, pour le redimensionnement au centre, remplacé celui d'en haut à gauche par ces lignes de codes:

//non centré
//_root.tester_mc._x=(945-Stage.width)/2;
//_root.tester_mc._y=(680-Stage.height)/2;

//centré
ccx=(945-Stage.width)/2;
ccy=(680-Stage.height)/2;
_root.tester_mc._x=ccx+((Stage.width/2) - (_root.tester_mc._width/2));
_root.tester_mc._y=ccy+((Stage.height/2) - (_root.tester_mc._height/2));
;
Messages postés
58
Date d'inscription
lundi 26 janvier 2004
Statut
Membre
Dernière intervention
14 novembre 2006

J'espère que ça pourra servir à qqn.

Bonne journée.

M.M.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.