J’ai découvert récemment un blog bien intéressant, consacré aux technologies web et notamment à Flex. Une rubrique m’a notamment fait sourire ; elle se nomme Architectural Atrocities, et ses articles, pour la plupart, se complaisent à recenser et critiquer certains aspects « douteux » du framework Flex et de ses produits associés (Cairngorm en prend notamment pour son grade). L’URL de ladite rubrique : http://blog.iconara.net/category/actionscript/architectural-atrocities/
Quelques tips pour les opérations mathématiques!
Aujourd’hui, quelques petites astuces sur les opérations mathématiques et leurs performances, récupérées en décortiquant les fichiers de règles de FlexPMD…
Les dessous de l’erreur Flex 2173 : The class does not implement flash.utils.IExternalizable
Juste un post rapide, dans l’espoir de pouvoir dépanner un jour un développeur tombé malencontreusement sur cette erreur :
ArgumentError: Error #2173: Unable to read object in stream. The class does not implement flash.utils.IExternalizable but is aliased to an externalizable class.
Sous cette description relativement obscure se cache l’explication suivante : une classe renvoyée depuis le serveur, et qui implémente l’interface IExternalizable, n’a pas été compilée au sein de votre application, et n’est donc pas reconnue à l’exécution. Pour cela, un « hack » tout simple consiste à inclure une référence à la classe concernée (et pas seulement un import!) dans votre code pour que la classe soit inclue dans l’application compilée.
Par exemple :
private static const _importedClasses:Array = [ maClasse ];
Et le tour est joué!
Voir les sources générées de votre projet Flex
Vous vous sentez en forme aujourd’hui, l’âme d’un guerrier et prêt à relever tous les défis? Jetez donc un coup d’œil aux sources générées suite à la compilation de votre projet Flex!
Compilation conditionnelle sous Flex.
La compilation conditionnelle est un aspect de Flex relativement peu connu des développeurs. De même, il aura probablement peu d’intérêt pour les petits projets… Cependant, elle peut s’avérer bien utile, notamment pour définir des traitements pour un état spécifique de l’application (mode debug par exemple).
Le principe est ici similaire au #ifdef du C, et va nous permettre de choisir d’intégrer (ou non) des parties du code à la compilation, selon la valeur d’une variable définie en option de compilation .
Retrouver la classe d’un objet en ActionScript.
Juste un petit article rapide pour vous donner un petit bout de code qui m’a servi nombre de fois… Vous avez un objet et souhaitez récupérer sa classe? Pas de problème, utilisez le code ci-dessous :
//Récupération de la classe d'un composant. var classObject:Class = getDefinitionByName( getQualifiedClassName(btnTest)) as Class; //Instanciation d'un nouvel objet de cette classe. var newObject:UIComponent = new classObject();
Monkey Patching, ou comment patcher une classe du framework Flex.
Tous les développeurs Flex ayant passé un peu de temps sur le SDK ont eu, au moins une fois, le besoin d’implémenter une méthode commune à tous les composants graphiques, que ce soit un Canvas ou un TextInput, en passant par un TabNavigator. Malheureusement, la seule solution restait l’ajout de ladite fonction dans chacune des classes, soit beaucoup de copier-coller et de maintenance…
Définir un style CSS pour les liens de vos objets Label/Text/etc…
Dans l’article précèdent, nous avions vu comment effectuer une action au clic sur une partie du texte d’un composant Label. Vous voilà donc heureux, avec votre texte qui déclenche une superbe action… Mais… Aucun utilisateur ne prend la peine de cliquer sur le texte. Pourquoi? Et bien, pour une raison bien simple : rien ne distingue le contenu interactif de votre composant du reste… Et donc, il n’est pas forcément intuitif ni évident pour un utilisateur potentiel de comprendre qu’un clic sur une portion donnée du texte aura un impact… Corrigeons donc cela.
Ajouter un lien sur une partie du texte des composants Label, Text, etc…
Vous utilisez le composant Flex Label (ou les composants qui l’étendent, comme Text), et vous souhaitez pouvoir réagir à un clic sur une portion de son contenu? Pas si simple!