Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/10/2011, 00h13   #1
Membre régulier
 
Inscription : août 2010
Messages : 159
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 159
Points : 91
Points : 91
Par défaut Supprimer une image insérer grâce à un ProLoader

Bonjour,

Je code actuellement une petite application en ActionScript 3. Pour les besoins de cette application je dois charger des images contenues dans mon dossier courant, au passage de la souris sur un Clip. Le chargement de l'image, son redimensionage et son insertion dans ma scène ne pose pas de problème. Par contre, les choses se corsent lorsqu'il s'agit de supprimer l'image une fois que ma souris est sortie de la zone du Clip.

Voici le code que j'ai actuellement:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
store4.addEventListener(MouseEvent.MOUSE_OVER, fl_ClickToLoadUnloadSWF);
store4.addEventListener(MouseEvent.MOUSE_OUT, fl_ClickToLoadUnloadSWF);
import fl.display.ProLoader;
import flash.display.Bitmap;
 
var fl_ProLoader:ProLoader;
var fl_ToLoad:Boolean = true;
function fl_ClickToLoadUnloadSWF(event:MouseEvent):void
{
	var i:int = event.target.name.charAt(event.target.name.length-1);
	if(event['type']=="mouseOver")
	{
		var pict2:Bitmap = new Bitmap();
		fl_ProLoader = new ProLoader();
		fl_ProLoader.load(new URLRequest("store"+i+".jpg"));
		fl_ProLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, pict_is_loaded)
 		function pict_is_loaded (e:Event) {
			var pict = fl_ProLoader.content;
			pict.x = 780;
			pict.y = 150;
			pict.width = 224;
			pict.height = 168;
 			addChild(pict);
			pict2=pict;
		}
	}
	else
	{
		fl_ProLoader.unload();
		removeChild(fl_ProLoader);
		fl_ProLoader = null;
 
	}
}
Je crée donc un nouveaux ProLoader, grâce à une requête URL je charge mon image. Une fois celle-ci chargée, j'applique 2 3 modification de ces propriétés et enfin je l'ajoute à la scène grâce à la méthode 'addChild'.

Pour la supprimer j'ai donc naturellement pensé à la méthode removeChild ainsi qu'au déchargement du ProLoader mais sans succès l'image reste scotchée à ma scène :/

PS: J'ai également testé removeChild(pict) ou essayé d'utiliser un tampon du type Bitmap pour sauvegardé la variable pict dans une variable globale, sans plus de succès.

Voila en espérant une idée quelconque pour résoudre mon problème ou éventuellement une autre méthode permettant de faire la même chose

Si vous avez la moindre question concernant le code dans son intégralité ou l'application en elle-même n'hésitez pas

Chipss,
Chipss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 03h44   #2
Membre régulier
 
Inscription : août 2010
Messages : 159
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 159
Points : 91
Points : 91
J'ai trouvé moi-même la réponse. A vrai dire je ne sait vraiment pas ce qui m'est passé par la tête pour faire ce que j'avais fait

En gros pour ceux que ça pourrait intéresser l'Event.MOUSE_OUT doit être inclus dans la fonction elle même et donc je n'avais pas besoin de ce système de if.

Je conçois que mes explications sont loin d'être claires donc voici mon code final qui marche:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
store4.addEventListener(MouseEvent.MOUSE_OVER, fl_ClickToLoadUnloadSWF);
import fl.display.ProLoader;
import flash.display.Bitmap;
import flash.events.Event;
 
var fl_ProLoader:ProLoader;
var fl_ToLoad:Boolean = true;
function fl_ClickToLoadUnloadSWF(event:MouseEvent):void
{
	var i:int = event.target.name.charAt(event.target.name.length-1);
	if(event['type']=="mouseOver")
	{
		var pict2:Bitmap = new Bitmap();
		fl_ProLoader = new ProLoader();
		fl_ProLoader.load(new URLRequest("store"+i+".jpg"));
		fl_ProLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, pict_is_loaded)
 		function pict_is_loaded (e:Event) {
			var pict = fl_ProLoader.content;
			pict.x = 780;
			pict.y = 150;
			pict.width = 224;
			pict.height = 168;
 			addChild(pict);
			addEventListener(MouseEvent.MOUSE_OUT, fl_ClickToUnloadSWF);
			function fl_ClickToUnloadSWF(evt:Event){
				fl_ProLoader.unload();
				removeChild(pict);
				fl_ProLoader = null;
			}
		}
 
	}
}
Chipss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h46.


 
 
 
 
Partenaires

Hébergement Web