il fut une époque (bien lointaine), où j'avais posté un problème (en
AS1), sur ce groupe. Entre temps, j'ai arrêté de coder, et je m'y
remet (je fais le grand écart entre AS1 et AS3)...
Enfin voilà, il s'agissait à l'époque de surcharger le constructeur de
la classe TextField afin que tous mes TextField créé à partir de l'IDE
lance un bout de code à leur initialisation.
Le pb, c'est que je souhaiterais reproduire ce comportement en AS3
mais j'ai le compiler qui m'envoie une erreur 1000 en me disant qu'il
y a une ambiguité sur le constructeur TextField...
Pour rappel, voici le thread de l'époque:
http://groups.google.com/group/fcng/browse_thread/thread/6c3cc8b5f38ec655/1ea58ae70aa0ba38?lnk=gst&q=TextField+override#1ea58ae70aa0ba38
Si quelqu'un à une idée, je vous remercie d'avance.
Ejoe
PS : ci-dessous un exemple de test pas concluant.
<code>
package {
import flash.display.Sprite;
import flash.text.TextField;
public class TextField extends Sprite {
override public function TextField() {
super();
trace("overridé");
}
}
}
</code>
Ejoe
On 25 nov, 12:54, ekameleon <ekamel...@gmail.com> wrote:
> Hello :)
>
> Une fonction constructeur en AS2 ou AS3 doit avoir le nom de la classe et
> c'est tout!
>
> En aucun cas elle doit avoir le mot clé override et surtout le nom de la
> superclasse.
>
> Lis bien la doc de l'AS3 au sujet de l'héritage des classes avec le mot clé
> super etc.
>
> EKA+ :)
>
> Le vendredi 25 novembre 2011, Ejoe <ekork...@noos.fr> a écrit :> Bonjour à tous,
>
> > il fut une époque (bien lointaine), où j'avais posté un problème (en
> > AS1), sur ce groupe. Entre temps, j'ai arrêté de coder, et je m'y
> > remet (je fais le grand écart entre AS1 et AS3)...
> > Enfin voilà, il s'agissait à l'époque de surcharger le constructeur de
> > la classe TextField afin que tous mes TextField créé à partir de l'IDE
> > lance un bout de code à leur initialisation.
> > Le pb, c'est que je souhaiterais reproduire ce comportement en AS3
> > mais j'ai le compiler qui m'envoie une erreur 1000 en me disant qu'il
> > y a une ambiguité sur le constructeur TextField...
> > Pour rappel, voici le thread de l'époque:
>
> http://groups.google.com/group/fcng/browse_thread/thread/6c3cc8b5f38e...
Changer le proto des objets natifs (as1, js), c'est pratique mais il y
a des effets pervers au niveau des perfs (conso mémoire, vitesse
d'exec) car tous les objets vont hérité des methodes même si ils n'en
ont pas besoin.
En as3 tu peux appliquer ton code spécifique uniquement là ou cela est
nécessaire via l'héritage.
en pratique cela donne ça :
// fichier MyTextfield.as à la racine de ton projet
package
{
import flash.text.TextField;
public class MyTextfield extends TextField
{
public function MyTextfield() // ton constructeur de classe
{
trace("mon code spécifique");
}
}
}
// dans Main.as
var customTextField:MyTextfield = new MyTextfield(); // ton objet
custom
var nativeTextField:TextField = new TextField(); // l'objet natif
dans ta console tu auras 1 seul trace : "mon code spécifique"
Ejoe
Ejoe
On 28 nov, 14:41, Loyat Marc <marc.lo...@gmail.com> wrote:
> Hello,
>
> alors, tu ne pourras pas "écraser" ou modifier la classe TextField en as3
> comme il était possible de le faire avec des classes as1 et sa légendaire
> souplesse digne des plus grand contorsionnistes !
> Ce que tu peux faire en revanche s'il faut que tu appliques qqc à tous
> champs textes créés dans l'IDE, c'est créer un écouteur sur tous les ajouts
> (ADDED_TO_STAGE) en capture qui te permettra de tester si tu as à faire
> avec un champ texte ou non et de faire la modif ad-hoc
>
> a+
>
> Marc
>
> 2011/11/28 Ejoe <ekork...@noos.fr>