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.
Ajouté le samedi 12 janvier 2008 à 15:11
lu 248 fois
-
un commentaire
-
aucun trackback
:: actionscript : as3 : classe : embed : oop : snippet