Contribuez ici à la FAQ Flex
Vous pouvez, dès à présent, postez vos propositions de Q/R à la suite de ce post. Si elles se révèlent intéressantes, elles seront intégrées à la FAQ avec votre nom. Indiquez dans votre post si vous voulez afficher votre nom complet ou seulement votre pseudo. Vous pouvez aussi participer en découvrant des erreurs dans la FAQ, des fautes d'orthographe, des liens morts ou en complétant une question/réponse actuelle.
Règles importantes pour participer :
:arrow: Si vous proposez une question, vous devez impérativement proposer la réponse qui va avec ... (les questions sans réponses seront supprimées)
:arrow: Un code source n'est pas une réponse en soit. Il est grandement apprécié de rédiger un paragraphe pour approfondir le sujet, apporter des précisions sur ce qu'on fait, pourquoi on fait comme ça, etc. On peut aussi en profiter pour inviter le lecteur à lire des questions/réponses dans des domaines proches ...
:arrow: Un code source doit être court : les imports ne sont pas nécessaires, aller à l'essentiel en 5 ou 6 lignes.
:arrow: En dessous des réponses sont souvent proposés des liens. Pensez à indiquer les liens utiles pour que le lecteur puisse approfondir. Cela peut être des liens vers des ressources de developpez.com ou des ressources externes.
:arrow: Dans certains cas, en plus des exemples courts dans la réponse, on peut ajouter un programme complet.
:arrow: N'oubliez pas d'indiquer également la version de Flex sur laquelle votre exemple fonctionne.
Merci à tous pour vos contributions
Bonne rédaction.
Cordialement,
Où trouver des exemples de code ?
Adobe fournit une application intitulée Tour de Flex fournissant des exemples d'utilisation des composants pour Flex 3 et Flex 4, Air 2.0. L'application fournit des exemples pour accéder aux données à partir d'un web service par exemple. Elle propose aussi des exemples de frameworks réalisés en Flex.
Vous pouvez retrouver la version en ligne de Tour de Flex ici. La version téléchargeable et à installer est disponible ici.
[AIR]Comment lancer une application AIR lors de la connexion d'un utilisateur sur son système d'exploitation ?
Bonjour,
cette astuce s'adresse aux personnes intéressées pour lancer une application Adobe AIR automatiquement lors du démarrage de l'ordinateur.
Cela peut-être intéressant dans certains cas d'une borne public par exemple, ou beaucoup d'individu ont accès à l'application. Dans ce cas, l'application se lance en même temps que l'ordinateur. En modifiant les paramètres de votre application, vous pouvez également la mettre en plein écran et ainsi éviter que l'utilisateur puisse la fermer et toucher à votre ordinateur.
Pour lancer votre application AIR au démarrage de Windows par exemple :
Ajouter dans la balise WindowedApplication :
Code:
1 2 3 4
|
<s:WindowedApplication xmlns:fx=...
...
applicationComplete="onApplicationComplete()" > |
et dans la balise Script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
private function onApplicationComplete():void
{
try
{
NativeApplication.nativeApplication.startAtLogin=true;
}
catch(e:Error)
{
trace("error = " + e.message.toString());
}
} |
Source : http://help.adobe.com/fr_FR/AIR/1.1/...5d46-8000.html (Paragraphe : Lancement lors de la connexion)
Comment convertir un projet Flex (Web) en projet Flex (AIR) ?
Il arrive souvent de vouloir modifier un projet Flex (application Web) en projet AIR (application de bureau).
Il existe pour cela un raccourci qui permet d'éviter de faire toutes les modifications de code et de balises à la main.
Pour cela, cliquez avec le bouton droit sur votre projet dans la fenêtre Explorateur de packages dans Flash Builder,
puis : Ajouter/Modifier le type de projet
puis : Convertir en projet de bureau Flex (exécution dans Adobe AIR)
puis : dans la boite de dialogue qui s'ouvre à vous, spécifier l'option voulue :
- Convertir les balises de l'application en WindowedApplication
- Ne réécrire aucun code
Terminez par OK
L'astuce semble ne marcher uniquement dans ce sens : de Application Web vers Application de bureau est n'est pas annulable.
L'astuce fonctionne avec Flash Buider 4 et n'a pas été testée avec les versions antérieures.
source : http://help.adobe.com/fr_FR/flashbui...E-D0D5B44F6129
Comment activer le mode debug du Flash Player dans Google Chrome
Bonjour à tous,
Voici la solution (super simple mais deux jours de recherche tout de même :mrgreen:)
Vous trouverez ici la dernière version du Plug-in Flash Debugger.
Choississez celle qui correspond à votre configuration (Pour Chrome, choisissez la Windows Compatible Netscape).
Téléchargez la et installez la.
Là, il faut savoir que les deux Plug-in sont installés mais que la version debug n'a pas la priorité.
Donc il faut manuellement aller désactiver celle dont on n'a pas besoin.
Pour Google Chrome : tapez l'url --> about:plugins et là vous trouverez deux "Shockwave". En fonction du numéro de version on devine facilement lequel est à désactiver.
Là, pas nécessaire de redémarrer google chrome, simplement fermer l'éventuel onglet contenant du Flash et le réouvrir suffira.
Enfin, pour savourer pleinement le résultat de la manip : faire un bouton droit sur une application Flash.
Vous constaterez que cette fois le menu contextuel a changé. :D
Comment communiquer avec eXist-db en Flex
Pour ceux qui souhaite communiquer avec une eXist-db, sachez que le protocole SOAP est très simple d'utilisation et très bien documenté !
Un peu de code pour s'en rendre mieux compte :
Code:
1 2 3 4
| <mx:WebService id="ws" wsdl="http://ipDuServer/exist/services/Admin?wsdl">
<mx:operation name="connect" resultFormat="e4x" result="connectResult(event)" fault="connectFault(event)"/>
<mx:operation name="store" resultFormat="e4x" result="storeResult(event)" fault="storeFault(event)"/>
</mx:WebService> |
Vous trouverez la liste des opérations offertes par le service SOAP ici.
(On fait difficilement plus simple :D)
Et pour être vraiment complet voici comment récupérer le sessionID renvoyé par l'opération connect() :
Code:
1 2 3 4
| private function connectResult(e:ResultEvent):void
{
sessionID = String(XML(e.result).children()[0]);
} |
Empêcher l'application d'être mise en cache par le navigateur.
Cette solution suppose que l'application est déservie par un serveur IIS.
- ouvrir IIS (outils administration/gestionnaire de service internet),
- chercher le site ou le répertoire en question,
- click droit (propriétés) et se rendre dans le quatrième onglet (http headers),
- cocher activer l'expiration du contenu et choisir une des options proposées.
Pour ma part j'ai opté pour "Expire immédiatement".
Comment ajouter ou retirer des jours/mois/annees d'une Date ?
Bonjour,
N'ayant pas réussi a importer la classe utilitaire DateTimeFunc j'ai trouvé une autre méthode pour manipuler l'objet Date :
On peut ajouter ou retirer facilement des jours mois ou années sur une date comme ceci :
retirer 18 mois :
Code:
1 2 3
|
var maDate:Date = new Date();
maDate["month"]-=18; |
Cela met à jour tous les champs de la date (date,month,fullYear,time...)
(si on execute ce code aujourd'hui 24/08/2010, la date sera au 24/02/2009)
ça marche également avec les jours et les années :
Code:
1 2 3
|
maDate["date"]
maDate["fullYear"] |
Si vous faites une rubrique sur les Date ça peut être utile ;)
Framework Flex, MXML et AS3
Compte tenu des confusions qu'il peut y avoir autour de ces différents termes, je me propose ici de faire la lumière sur les différentes définitions:
Flex est un Framework Actionscript:
Flex, n'est pas un langage de programmation, mais bien un framework. Au même titre que Zend pour PHP ou Spring pour Java.
Qu'est ce que ça veut dire ?
Cela veut dire que lorsque vous codez une application à l'aide de Flex, vous devez inscrire votre code dans des cycles de vie qui sont propres au Framework qui possède ces propres mécaniques et ces astuces.
MXML est un dérivé XML de description d'application dans Flex:
Le MXML vous permet de définir votre interface de manière plus "intuitive" mais lorsque vous compilez votre code pour qu'il soit exporté dans un swf (par exemple), votre MXML va être transformé en code Actionscript et c'est ce code qui sera dans le swf.
La conséquence de ce prédicat est que tout ce vous faites en MXML est faisable en Actionscript.
AS3 (Actionscript 3) est le langage de programmation de Flex:
Comme Zend pour PHP, vous créer des classes en AS3 pour qu'elles soient utilisées par le Framework Flex.
Ce langage est celui du lecteur flash et vous permet de manipuler à peut près tout ce que vous voulez dans votre application.
J'espère avoir été le plus clair possible et aidé à la compréhension de ces différents termes.
Comment ajuster l'alignement vertical d'un formItem ?
Problème : il arrive fréquemment de redéfinir des composants à partir d'autres composants existants. Ces composants personnalisés peuvent redéfinir par exemple les propriétés minWidth ou minHeight qui vont parfois dans le cas d'un formItem engendrer une présentation du label ne nous convenant pas. En effet, le label associé à un formItem gardera toujours une position de centrage vertical de type "top" puisque la propriété verticalAlign n'est pas définie pour un formItem à la différence de la propriété horizontalAlign.
Solution : étendre nous même le conteneur formItem et y adjoindre la propriété verticalAlign absente.
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
|
/* Importation de la classe FormItem qui va être étendue */
import mx.containers.FormItem;
/* Définition du nouveau style "verticalAlign" absent par défaut du formItem */
[Style(name="verticalAlign", type="String", inherit="no")]
public class MyFormItem extends FormItem
{
public function MyFormItem()
{
super();
}
/* redéfinition de la méthode updateDisplayList appelée pour définir la taille et la position des enfants du formItem et ajout d'un comportement spécifique lors de l'appel de la propriété "verticalAlign" */
override protected function updateDisplayList(w:Number, h:Number):void {
super.updateDisplayList(w, h);
var verticalAlign:String = getStyle("verticalAlign");
if (verticalAlign == "middle") {
itemLabel.y = Math.max(0, (h - itemLabel.height) / 2);
} else if (verticalAlign == "bottom") {
var padBottom:Number = getStyle("paddingBottom");
itemLabel.y = Math.max(0, h - itemLabel.height - padBottom);
}
}
} |
Dorénavant, il est possible de centrer verticalement le label d'un formItem. Celui ci peut être placé en haut (top), au milieu (middle) ou au bas (bottom)
Exemples :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<mx:Form>
<composants:MyFormItem label="un label en position top (défaut)">
<s:TextArea />
</composants:MyFormItem>
</mx:Form>
<mx:Form>
<composants:MyFormItem label="un label en position centrée verticalement (middle)" verticalAlign="middle">
<s:TextArea />
</composants:MyFormItem>
</mx:Form>
<mx:Form>
<composants:MyFormItem label="un label en position basse (bottom)" verticalAlign="bottom">
<s:TextArea />
</composants:MyFormItem>
</mx:Form> |
Citation:
Proposé par Madfrix
Testé sous Flex 4
[Flex 3] Comment ajouter une image de fond sur mon application ?
Dans Flex 3, l'objet application dispose d'une propriété backgroundImage.
Code:
1 2 3
| <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml" target="_blank">http://www.adobe.com/2006/mxml</a>" layout="absolute" backgroundImage="monImage.jpg">
</mx:Application> |
Si vous souhaitez embarquer l'image dans votre SWF, vous pouvez utiliser @Embed. Le chargement de l'image sera alors très rapide :
Code:
1 2 3
| <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="<a href="http://www.adobe.com/2006/mxml" target="_blank">http://www.adobe.com/2006/mxml</a>" layout="absolute" backgroundImage="@Embed('monImage.jpg')">
</mx:Application> |
[Flex 4] Comment ajouter une image de fond sur mon application ?
Pour ajouter une image en fond d'écran sur une application utilisant Spark (la nouvelle librairie graphique de Flex 4), il faut définir le skin (fichier MonSkin.mxml) de l'application, qui correspond à l'habillage :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="<a href="http://ns.adobe.com/mxml/2009" target="_blank">http://ns.adobe.com/mxml/2009</a>"
xmlns:s="library://<a href="http://ns.adobe.com/flex/spark" target="_blank">ns.adobe.com/flex/spark</a>"
xmlns:mx="library://<a href="http://ns.adobe.com/flex/mx" target="_blank">ns.adobe.com/flex/mx</a>">
<!-- Définition du composant sur lequel est ciblé l'habillage -->
<fx:Metadata>
[HostComponent("spark.components.supportClasses.SkinnableComponent")]
</fx:Metadata>
<!-- Ajout des états disponibles pour cet habillage, ici normal et disabled. -->
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
</s:states>
<!-- Insertion de l'image comme pour l'exemple avec Flex 3 vous pouvez utiliser @Embed pour embarquer l'image dans le SWF -->
<s:BitmapImage source="monImage.jpg" />
<!-- -->
<s:Group id="contentGroup" width="100%" height="100%" />
</s:Skin> |
Vous pourrez ensuite utiliser cet habillage dans votre application principale en précisant le skinClass à appliquer :
Code:
1 2 3 4 5
| <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
skinClass="custom.MonSkin" >
</s:Application> |