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 17/08/2011, 16h48   #1
Invité de passage
 
Inscription : juin 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 4
Points : 1
Points : 1
Par défaut Chargement d'une image à partir d'un swf

Bonjour,

Je débute en AS3 et je dois créer une sorte d'AssetManager pour gérer le loading de différents asset (swf, image, sound, movieclip, xml etc..).

Je dispose d'un fichier .swf qui contient une image. J'ai créé ce .swf à partir de mon fichier .fla où dedans j'ai spécifié dans les propriétés de mon image:
classe de base : flash.display.BitmapData
(Pour information j'utilise flash professional CS5 pour la création de mon swf)

Lorsque je charge le .swf et que je veux accèder aux données de mon image, je suis censé recevoir un objet de type BitmapData.
Cependant, ce que j'obtiens n'est pas un BitmapData mais un MovieClip.

Je voulais savoir si c'était normal que je récupère un MovieClip? Ou alors est-ce que j'ai fait une erreur lors de la création de mon swf?

Voici le code qui traite les données extrait de mon .swf
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
36
37
38
39
40
41
42
43
44
45
46
47
 
override public function onComplete(data:*):void
		{
			if(data != null)
			{
				// Lorsque je récupère les données, directement, via une image.
				if(data is Bitmap)
				{
					original = data;
					super.onComplete(original);
				}
				else if(data is BitmapData)
				{
					original = new Bitmap(data);
					super.onComplete(original);
				}
				// Lorsque je récupère les données via un .swf
				else if(data is Loader)
				{
					var ad:ApplicationDomain = data.contentLoaderInfo.applicationDomain;
					if(ad != null)
					{
						if (ad.hasDefinition(uri.getPost()))
						{
							// Je suis censé rentrer ici...
							if( data.content is BitmapData)
								original = new (ad.getDefinition(uri.getPost()) as Class) as BitmapData;
							// Je vois pas pourquoi je récupère un MovieClip ici....
							else if( data.content is MovieClip)
							{
								original = new (ad.getDefinition(uri.getPost()) as Class) as MovieClip;
							}
 
							if(original == null) {
								onFailed("This symbol: "+uri.getPost()+" doesn't exists in: "+uri.getPre());
								return;
							}
							super.onComplete(original);
						}
						else onFailed("This symbol: "+uri.getPost()+" doesn't exists in: "+uri.getPre());
					}
					else onFailed("The ApplicationDomain of the asset: " + getUri() + " is null");
				}
				else onFailed("The data of the asset: " + getUri() + " are not a Bitmap's data or a Loader's data.");
			}
			else onFailed("The data of the asset: "+ getUri() + " are null.");
		}
Mysen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h02   #2
Membre du Club
 
Avatar de Freyskeyd
 
Homme Simon Paitrault
Développeur PHP | Flex
Inscription : octobre 2007
Messages : 74
Détails du profil
Informations personnelles :
Nom : Homme Simon Paitrault
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur PHP | Flex
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2007
Messages : 74
Points : 53
Points : 53
Si tu crée ton swf via flash tu peux accéder au image/bouton/truc via leur nom d’occurrence.
Freyskeyd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h07   #3
Invité de passage
 
Inscription : juin 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 4
Points : 1
Points : 1
Le problème c'est que là mon swf je l'ai créé pour effectuer des tests.

A la base mon application devra pouvoir charger n'importe quel swf quelques soit le symbole dedans.
Je peux donc pas utiliser le nom de l'occurrence directement puisque je suis pas supposer le connaitre à ce moment là
Mysen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h21   #4
Membre du Club
 
Avatar de Freyskeyd
 
Homme Simon Paitrault
Développeur PHP | Flex
Inscription : octobre 2007
Messages : 74
Détails du profil
Informations personnelles :
Nom : Homme Simon Paitrault
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur PHP | Flex
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : octobre 2007
Messages : 74
Points : 53
Points : 53
Mmhhh.

Je ne suis pas chez moi donc je peu pas test, mais je pense que tu peu utiliser le movieClip, soit pour afficher directement ton image, soit pour dessiner un bitmapData avec draw();

++
Freyskeyd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 09h25   #5
Invité de passage
 
Inscription : juin 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 4
Points : 1
Points : 1
Hmm, je vais essayer de dessiner un bitmapdata avec un draw et on verra bien.

En tout cas merci pour ton aide
Mysen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 11h06   #6
Invité de passage
 
Inscription : juin 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 4
Points : 1
Points : 1
Bon ben j'ai résolu mon problème, merci pour ton aide

En fait, je viens de voir que lorsqu'on charge un swf, on récupère comme type de donnée un MovieClip même si dedans on à une image/son/vidéo.

Sauf qu'on peut très bien le caster dans le type du format qui se trouve à l'intérieur du swf.
Dans mon cas, je pouvais faire :
Code :
1
2
3
 
if(data.content is MovieClip)
	var bmd:BitmapData = new (ad.getDefinition(uri.getPost()) as Class) as BitmapData;
Mon erreur était que je pensais que je devais absolument récupérer les types de données qu'il y avait dans mon swf... Ce qui est stupide puisqu'on peut avoir plusieurs type de données différentes dans un swf ^^
Mysen est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web