Composant Flex – Sélection de la Date et de l'Heure (DateTime)
Pour la création d'un formulaire Flex, j'avais besoin de rentrer la date d'un évènement ainsi que l'heure, avant l'envoi vers un WebService. Pour la sélection de la date, il y a le composant Flex DateField qui se présente comme un champ texte et qui affiche un calendrier (DateChooser), une fois cliqué. Pour la sélection de l'heure, je pouvais utiliser des NumericStepper, permettant de choisir facilement l'heure (+/-). J'ai donc fait quelques recherches pour essayer de trouver un composant permettant de faire ces deux sélections en un seul composant.
Joel Hooks propose un composant bien fait appelé DateTimePicker, qui permet de regrouper ces pickers. Ce composant est Open Source, libre à vous de le mettre à votre sauce.Voici un exemple de son utilisation:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:timePicker="com.visualempathy.display.controls.datetime.*"
horizontalAlign="center"
verticalAlign="top" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
[Bindable] private var dateString:String;
public function onClick():void
{
if(picker.selectedDate.getFullYear() == 1974)
{
picker.selectedDate = new Date()
button.label = "My Birthday"
}
else
{
picker.selectedDate = new Date(1974,4,11,7,40)
button.label = "Now"
}
}
]]>
</mx:Script>
<mx:VBox horizontalAlign="center" verticalAlign="top" width="100%" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" height="300">
<mx:VBox width="100%" horizontalAlign="center" verticalAlign="middle" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" backgroundColor="#F0F0F1" borderStyle="solid" borderThickness="0" cornerRadius="10">
<mx:Label text="Date and Time Picker:" fontWeight="bold" fontSize="14"/>
<timePicker:DateTimePicker selectedDate="{new Date()}" id="picker" change="this.dateString = picker.selectedDate.toString()" minuteIncrement="5" backgroundColor="#FFFFFF"/>
</mx:VBox>
<mx:HBox>
<mx:Button id="button" label="My Birthday" click="onClick()"/>
</mx:HBox>
<mx:Label text="Selected Date: {dateString}" id="the" width="100%" textAlign="center" fontWeight="bold"/>
</mx:VBox>
</mx:Application>
Flex Source Code Download: Télécharger le code source complet de l'application
Flex / Air – Fermer toutes les fenêtres de votre application Air
Grâce à Adobe Air, vous pouvez ouvrir de nouvelles fenêtres, qui seront le plus souvent affichées à l'utilisateur. Vous pouvez aussi créer de nouvelles <mx:Window> en fond sans qu'elles ne soit affichée (j'ai utilisé cette technique pour une identification automatique HTML par redirection 302 que l'utilisateur n'avait pas besoin de voir). Vous avez peut-être remarqué que si vous n'avez pas fermé votre application Air, Flex Builder ne peut pas en lancer une autre, et donc, si vous avez encore une fenêtre ouverte mais non affichée en background, votre seule solution sera de "killer" à la main le processus adl.exe (Adobe AIR Debug Launcher) par le gestionnaire des tâches. Cela signifie aussi que votre application serait toujours lancée (dans une phase de production) et continuerai à utiliser de la mémoire vive.
Pour fermer toutes les fenêtres d'une application Air, vous pouvez utiliser directement la commande:
NativeApplication.nativeApplication.exit();
Cette méthode va bien fermer toutes les fenêtres. En revanche, si vous avez mis un handler sur l'évènement Event.CLOSING (fermeture de la fenêtre par la petite croix rouge), il ne sera pas exécuté. Cela peut devenir gênant si vous vouliez dans une utilisation normale, sauvegarder des données dans des Shared Objects avant la fermeture ou bien demander une confirmation comme quoi l'utilisateur veut bien fermer cette fenêtre.
Flex et Air – Upgrade à Flex SDK 3.2 et projets Air qui ne se lancent plus [Résolu]
Jusqu'à aujourd'hui, je travaillais sur une version de Flex SDK 3.0 aussi bien pour mes projets Flex que Adobe Air. Pour pouvoir tester Adobe Alchemy, il fallait que je compile mon application vers un Flash Player 10 (mes projets précédents étaient tous compilés pour fonctionner sur Flash Player 9). Pour compiler une application qui tourne sous Flash Player 10, il faut modifier les propriétés du projet (clic droit sur le projet>Propriétés>Flex Compiler>Required Flash Version). Après une tentative de compilation, Flex Builder me lâche l'erreur:
unable to open [Path]player\10\playerglobal.swc
Comme mon Flex SDK était trop vieux, il ne trouvait pas le SWC pour FP10. Je lance donc l'update par le menu Help>Search For Flex Builder Update, et après téléchargement, je me retrouve avec la dernière version stable du Flex SDK 3.2.
J'essaie ensuite de lancer une des mes applications Adobe Air, et rien ne se passe. Le problème est qu'en fait, Adobe Air est passé de la version 1.1 à la version 1.5 entre temps et le fichier XML descripteur de mon application Air n'était pas à jour.
Pour faire fonctionner les projets Air après une update du SDK, il faut modifier le namespace du fichier descripteur. Ce fichier descripteur se trouve à la racine de votre répertoire de projet sous le nom :[NomApplication]-app.xml.
A la deuxième ligne, changez :
<application xmlns="http://ns.adobe.com/air/application/1.1">
en
<application xmlns="http://ns.adobe.com/air/application/1.5">
Flex / Air – Emplacement des Shared Objects Air sur le disque
Les Shared Object (ou LSO: Local Shared Object), sont des fichiers qui peuvent être écrits sur le disque par Flash Player sans demander l'autorisation de l'utilisation. C'est adapté pour conserver des favoris par exemple ou un historique. Il n'est pas conseillé de conserver des informations confidentielles dans ces fichiers car ils peuvent être lus facilement.
Plus d'information sur la création, lecture, écriture de Shared Object
Lorsque vous les créez par l'intermédiaire d'une application Flex ou Flash en général, les Shared Objects sont créés sur le disque à l'adresse (sous Vista):
C:\Users\Nom\AppData\Roaming\Macromedia\Flash Player\#SharedObjects.
Vous aurez ensuite accès dans ce dossier #SharedObject à un arborescence de dossier correspondant aux différentes URL correspondant à l'emplacement des fichiers SWF ayant enregistré un SWF.
Pour une application Air en revanche, on a une application type bureautique, il n'y a donc pas d'URL correspondant à une application en particulier.
Les fichiers Shared Object .sol se trouvent en fait sur le disque à l'adresse (sous Vista):
C:\Users\[Nom utilisateur]\AppData\Roaming\[Nom de votre application]\Local Store\#SharedObjects
Flex Debug – Garbage Collector AS3: Gestion des ressources
ActionScript 3 a beaucoup apporté aux développeurs Flash, aussi bien pour les nombreuses améliorations de l'API, que pour la rapidité d'exécution de son code. Malheureusement, cela a aussi demandé aux développeurs bien plus de responsabilités et d'attention qu'avant. On va voir dans cet article comment gérer ses ressources dans un projet AS3 pour éviter les fuites de mémoires (Memory Leaks).
Flex Debug - Garbage Collector AS3 et Flash Player 9
Le plus grand changement apporté par l'AS3 qui affecte la gestion des ressources mémoire est le nouveau modèle de la liste d'affichage (Display List). Avec Flash Player 8 et inférieur, quand un Display Object était supprimé de l'écran (par un removeMovie ou un unloadMovie), lui est tous ses descendants étaient immédiatement supprimés de la mémoire, et toute exécution du code était stoppée. Flash Player 9 introduit un modèle de Display Liste bien plus flexible, où les Display Objects (Sprite, MovieClip, etc.) sont traités comme des objets classiques. Cela veut dire que les développeurs peuvent faire de nouvelles choses comme la modification de parent (bouger un Display Object d'une Display List à une autre), et instancier des Display Object depuis des SWF chargés. Malheureusement, ce veut aussi dire que les Display Object sont maintenant traités comme n'importe quel objet par le Garbage Collector, ce qui apporte de nouveaux problèmes pas toujours évidents.





