Tynambule
« mai 2008
lunmarmerjeuvensamdim
1234
567891011
12131415161718
19202122232425
262728293031


samedi 12 janvier 2008

En AS3, on peut faire un chouette truc tel que décrit dans le billet sur les balises embed, à savoir ceci :

(Pour les détails, se référer au billet sur la métadonnée embed.)

Maintenant, imaginons que dans notre symbole "test", on aie un TextField qui se nomme "_tfFoo". Dans notre classe décrivant ce symbole, on en aura certainement besoin. Tout naturellement, je l'aurais ajouté en faisant :

Sauf qu'en fait non. Si on fait ça, le compilateur gueule :

ReferenceError: Error #1056: Impossible de créer la propriété _foo sur net.tynambule.exp.PrivateEmbed.
	at flash.display::Sprite/flash.display:Sprite::constructChildren()
	at flash.display::Sprite$iinit()
	at net.tynambule.exp::PrivateEmbed$iinit()[Y:\Code\Workspace\Exp\src\net\tynambule\exp\PrivateEmbed.as:11]
	at net.tynambule.exp::PrivateEmbedContainer$iinit()[Y:\Code\Workspace\Exp\src\net\tynambule\exp\PrivateEmbedContainer.as:12]

Pourquoi? Parce que les éléments placés sur la scène dans un symbol embed ne sont pas internal (ni private, ni protected), mais... public. Ce qui m'oblige à réécrire :

Et là, ça marche. Sauf que moi, j'aurais bien aimé que mon joli TextField ne soit pas accessible depuis n'importe où dans mon code, vu que je préfère quand l'interface est planquée dans son coin et qu'elle n'a rien à voir avec la logique.

Voili voilou, c'est pas très joli et c'est un peu prise de tête de piger pourquoi ça foire. J'me demande pourquoi Adobe a fait ça. Snif. Allez, salut.

jeudi 06 décembre 2007

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