Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
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 08/11/2011, 14h58   #1
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 327
Points : 2 327
Par défaut Externaliser librairies de skins

Bonjour,

je cherche à externaliser mes fichiers de skins dans des projets de type "projet de bibliothèques Flex" puis à les importer dans l'appli principale en tant que RSLs.

C'est fonctionnel sauf que les RSLs étant toutes chargées au runtime, je peux avoir n RSLs chargées qui ne me servent pas

En effet, je souhaite que l'utilisateur via une liste déroulante par exemple puisse changer dynamiquement le skin. Ce skin devra donc être chargé et appliqué lors d'un changement de choix dans cette liste déroulante et pas avant.

Je suppose donc que les RSLs ne sont pas un choix approprié pour ce genre de manipulations. Cependant, je ne vois pas non plus comment puis je m'en tirer avec le SWFLoader ou les modules non plus

Auriez vous une idée ?

Merci
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 16h22   #2
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Ingénieur consultant, leader Flex
Inscription : avril 2006
Messages : 2 194
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur consultant, leader Flex
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 194
Points : 3 377
Points : 3 377
Salut,

je ne suis pas certains d'avoir bien compris ... mais tu souhaites charger/décharger des skins , c'est bien ca ? pourquoi les modules ne correspondent pas à ton besoin ?
__________________

Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
Pensez au tag

Mon Blog sur la techno Flex
Ma page sur Developpez.com

Jim_Nastiq
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 12h47   #3
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 279
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 279
Points : 2 327
Points : 2 327
Hello,

tu as raison parfois je cherche midi à 14 heures

J'ai simplement utilisé un loader. Voici ce que j'ai fait concrètement :
  1. Création de 2 projets de bibliothèques Flex dans lesquels j'ai crée dans l'un une classe skins.Skin1 et dans l'autre une classe skins.Skin2
  2. Extraction des 2 SWCs générés du fichier library.swf et renommage en library_skin1.swf et library_skin2.swf (ce sont donc mes fichiers de skins à proprement parlé). Mise dans un répertoire commun des 2 fichiers.
  3. ajout de la directive -use-network=false au compilateur pour éviter les erreurs de chargement 2048 (test en local)

Mon MXML est celui là :

Code :
1
2
3
 
<s:DropDownList dataProvider="{new ArrayList([{label:'skin1'}, {label:'skin2'}])}" labelField="label" selectedIndex="-1" change="dropdownlist1_changeHandler(event)"/>
<s:Button id="test" label="test"/>
Mes fonctions de test sont celles-ci :

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
 
import flash.utils.getDefinitionByName;
 
			import mx.collections.ArrayList;
 
			import spark.events.IndexChangeEvent;
			import spark.skins.SparkButtonSkin;
 
			private var _skin:String;
 
 
			protected function dropdownlist1_changeHandler(event:IndexChangeEvent):void
			{						
				var ddl:DropDownList = event.currentTarget as DropDownList;		
				_skin = ddl.selectedItem.label;
 
				var ldrContext:LoaderContext = new LoaderContext(false,	ApplicationDomain.currentDomain);				
				var l:Loader = new Loader();
 
				l.contentLoaderInfo.addEventListener(Event.OPEN, onOpen);
				l.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
				l.load(new URLRequest("E:/workspaces/flex/sim_test/Skin1/bin/library_"+_skin+".swf"), ldrContext);				
			}
 
			protected function onOpen(event:Event):void 
			{
				trace('open');
			}
 
			protected function onComplete(event:Event):void
			{		
				var fullyQualifiedName:String = "skins." + _skin.charAt(0).toUpperCase() + _skin.substr(1); 
 
				var buttonSkin:Class = getDefinitionByName(fullyQualifiedName) as Class;
				test.setStyle("skinClass", buttonSkin);
			}
Ca marche correctement. Bien sur tous les tests de vérification d'existence du fichier de skin, de vérification s'il est déjà chargé en mémoire etc...ne sont pas là, c'est juste un test.

D'arpès toi, quels pourraient être les avantages d'utiliser les modules par rapport aux loaders ? Gestion plus fine des ressources ?

Merci à toi
__________________
Je ne réponds pas aux questions envoyées par mp
Madfrix 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 14h25.


 
 
 
 
Partenaires

Hébergement Web