Archive

Articles taggués ‘mxmlc’

Les SWC produits par Flex Builder contiennent un SWF étrange.

12/04/2008 un commentaire

Je bosse actuellement sur un système de tests unitaires en AS3, car FlexUnit ne me convenait pas par la lourdeur (certainement subjective) de son utilisation. Le principe de base consiste à compiler le projet de tests unitaires sous forme d’un SWC, qui est ensuite chargé et décompressé par le système, qui en extrait le SWF de librairies afin de le charger, pour pouvoir exécuter le code des classes de tests.

Tout marche vachement bien, et hier soir, je me dis que je vais le ramener à la maison pour trifouiller un peu ce week-end. Et là, crack, impossible de le faire marcher de chez moi. Wtf? En fait, lorsque le SWF est chargé par un Loader, ce dernier ne produit pas d’évènement INIT, ni d’évènement COMPLETE. Il produit par contre des évènements PROGRESS, dont un où bytesLoaded == bytesTotal. Mais les classes contenues par le SWF ne sont (visiblement) jamais ajoutées à l’ApplicationDomain précisé dans le LoaderContext.

Après une petite analyse, il apparait que les SWC produits par FlexBuilder ne sont pas strictement identiques à un SWC produit par compc. À coup de Swfmill, la différence apparaît clairement:

SWF contenu dans un SWC produit par compc, exemple de contenu pour le tag 0×52 (ABC pour AVM2), en Base64 :

AAAAAFVuaXRUZXN0aW5nQ29t(...)

SWF contenu dans un SWC produit par FlexBuilder, même segment du même tag, en Base64 :

AQAAAFVuaXRUZXN0aW5nQ29t(...)

Ne me demandez pas ce que fout ce Q là, mais en le remplaçant par un A, le SWF fonctionne à nouveau. Si une personne connaissant mieux le bytecode AVM2 que moi (ce qui n’est pas difficile), et ayant une idée de ce que signifie ces entêtes, toute info est la bienvenue. Allez, salut.

Categories: Code Tags: ,

Flex 3 Beta 3 et AIR Beta 3

13/12/2007 Aucun commentaire

Adobe a utilisé de joli rubans roses pour emballer les cadeaux qui nous arrivent aujourd’hui : les beta 3 de Flex 3 et de AIR !

Pas de différences majeures entre la beta 2 et la beta 3 pour Flex 3, si ce n’est l’arrivée de la compatibilité avec BlazeDS. En ce qui me concerne, j’ai décidément beaucoup de mal avec ces trucs de remoting génériques. Rien ne vaut un bon vieux serveur socket codé pour l’occasion !

Quant à AIR Beta 3, je n’ai pas réussit à mettre la main sur un changelog par rapport à la Beta 2.

Téléchargements :

Categories: Code Tags: ,

La métadonnée Embed en AS3

06/12/2007 3 commentaires

Il y a peu, le monde merveilleux de l’ActionScript 3 s’est ouvert à moi. Même si certaines choses sont un peu déroutantes, ayant parcouru un très long chemin en AS2 (raah, l’absence de constructeurs private/protected! Enfoirés de l’ECMA, laissez tomber cet héritage par prototype à la con!), certaines des nouvelles fonctionnalités tuent carrément.

Un truc qui m’avait toujours gonflé en AS2, c’est la liaison entre les assets et le code. Je codais sous Eclipse en compilant avec MTASC, et je modifiais mes assets sous Flash. Seulement, histoire de pouvoir les associer à une classe, je devais, au choix, mettre ma classe sous Flash (et me taper une compilation AS par Flash d’environs 30 minutes), ou faire une grosse méthode bourrine à coup de Object.registerClass.

C’était, avouons-le, pas super beau. Mais désormais, en AS3, les gens d’Adobe ont rajoutés des métadonnées merveilleuses qui permettent de faire ça tout seul, et bien plus encore.

Lire la suite…

Categories: Code Tags: , ,