Problème redimensionnement image apres chargement externe

matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010 - 22 janv. 2010 à 18:01
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010 - 23 janv. 2010 à 20:00
Bonsoir!!
Voici mon soucis: j'aimerais pouvoir redimensionner mon image après l'avoir chargé mais il ne se passe rien lorsque je fais ceci:

var conteneurImage:Loader = new Loader(); 
 
var image:URLRequest = new URLRequest("av1.png"); 

conteneurImage.load(image); 

this.addChild(conteneurImage);

conteneurImage.width = 50;


Merci d'avance pour votre aide

39 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
22 janv. 2010 à 18:17
bonsoir,

C'est normal puisque tu n'attends pas que ton image soit chargée .. donc un Loader fait 0x0 de base, et n'est dponc pas redimensionnable.
Cherche sur le site des scripts de chargement d'images en as3 ou parcours la doc de flash, tout y est expliqué.

Peg'
0
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010
22 janv. 2010 à 18:22
Oui j'ai trouvé un script du genre mais voici mon soucis : imaginons que je la redimensionne a 100px de large au moment de l'upload mais que par la suite je veux la redimensionner en 120px, comment puis-je faire?
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
22 janv. 2010 à 18:25
tu veux peut-être dire "download" ? .. ben tu fais exactement pareil qu'uns fois le chargement effectué. Je ne vois pas le problème

Peg'
0
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010
22 janv. 2010 à 18:34
Voici le code complet :

	function loadImage(path:String):Loader
{
var request:URLRequest = new URLRequest(path);
var loader:Loader = new Loader();
loader.load(request);
loader.contentLoaderInfo.addEventListener( Event.INIT , loaded)
return loader;
};

var image = new Array();

for(i=1;i<4;i++)
{	
image[i] = loadImage("av"+i+".png");	
}

function loaded(event:Event):void 
{
var targetLoader:Loader = Loader(event.target.loader);
targetLoader.width = 60;
targetLoader.scaleY = targetLoader.scaleX;
}

this.addChild(image[1]);


Ainsi lorsque j'affiche l'image 1 par exemple, elle s'affiche avec une largeur de 60. Or comment la redimensionner si je la veux en 80 par la suite par exemple?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
22 janv. 2010 à 19:21
ben tu changes le width à 80 ... je ne saisis pas bien le sens de ta question, là ...

Peg'
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
22 janv. 2010 à 19:26
oui, non, j'ai saisis .. il faut que tu sortes la référence de ton loader en dehors de la fonction de chargement, comme ça elle sera accessible tout au long du projet.

Peg'
0
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010
22 janv. 2010 à 19:27
Et comment jpeux faire ca? :/ En tout cas merci c'est gentil de m'aider ^^
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
23 janv. 2010 à 11:05
en déclarant ta variable de loader en dehors de la fonction.

Peg'
0
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010
23 janv. 2010 à 11:14
Merci mais je ne comprends pas trop ce que tu me dis, ça ne fait que 2 jours que je me mets au flash donc j'ai un peu de mal pour le moment à bien tout assimiler les principes.

J'ai simplifier le code de la façon suivante :

	var image = new Array();

for(i=1;i<4;i++)
{	
var requete:URLRequest = new URLRequest("av"+i+".png");
image[i] = new Loader();
image[i].load(requete);
image[i].contentLoaderInfo.addEventListener( Event.INIT , ChargementTermine)

function ChargementTermine(event:Event):void 
{
image[i] = Loader(event.target.loader);
image[i].width = 60;
image[i].scaleY = image[i].scaleX;
}	
}

this.addChild(image[1]); // image affichée en 60px de large

// comment faire pour l'afficher en 100px de large par la suite?


Qu'est ce que tu appeles déclarer ma variable en dehors?
Désolé d'être un peu dur de la feuille
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
23 janv. 2010 à 11:22
Suand tu met une variable en "var" dans une fonction, à la fin de cette fonction, la variable n'est plus instanciée, et donc plus accessible. si tu déclare ta variable comme tu viens de le faire pour ton tableau, elle est dispo tout au long de ton code.

Peg'
0
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010
23 janv. 2010 à 11:33
Rhaaaa ma tête va exploser!

Si j'ai bien compris, ce que je dois faire c'est remplacer :

var image = new Array();


par

image = new Array();


ou

var requete:URLRequest = new URLRequest("av"+i+".png");


par

requete:URLRequest = new URLRequest("av"+i+".png");


?
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
23 janv. 2010 à 11:54
non, je t'ai dit de déclarer ta variable de loader en dehors de ta fonction.

qu'est-ce que tu ne comprends pas ?

Peg'
0
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010
23 janv. 2010 à 12:17
Tu veux dire ca :
image[i] = new Loader();
? faut que je le mette en dehors de la boucle?
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
23 janv. 2010 à 12:27
non ...

Mais si ton array est déjà instancié en dehors de ta fonction et que tu y crées les loaders, pas de soucis.

Peg'
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
23 janv. 2010 à 12:32
oui, non ...

Je vais te soumettre un petit exercice de réflexion :

Sachant que pour ajouter un DisplayObject appelé "toto" à la liste d'affichage il faut faire "addChild(toto);"
Sachant que pour redimensionner un DisplayObject appelé "toto" à 100px il faut faire "toto.width = 100;"
Sachant que tu as affiché ton loader comme ceci "addChild(images[1]);"

Comment ferais-tu pour redimensionner ton loader à 100px ?

tu as 1h ... et que je te vois pas copier sur tes petits camarades !

Peg'
0
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010
23 janv. 2010 à 12:32
Rhaaaaaaa

Tu peux juste me donner la ligne que tu appeles le loader please?
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
23 janv. 2010 à 12:38
fais mon exercice, tu comprendras ...

Peg'
0
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010
23 janv. 2010 à 12:39
Ah zut excuses moi j'avais pas vu ^^
0
matthmuc72 Messages postés 31 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 24 janvier 2010
23 janv. 2010 à 12:41
Et bien je ferais :

addChild(images[1]);
image[1].width = 100;


Je vais mfaire taper!!! désolé maitre!
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
23 janv. 2010 à 12:46
bien ;)

Peg'
0