Salut,
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"
On 25 nov, 14:55, Ejoe <[email protected]> wrote:
> Salut EKA!
> Quelle coïncidence, j'avais lu ton article sur les prototypes et
> l'overriding. Très bien fichu. Mais apparemment je dois pas être futé
> car malgré çà je tourne en boucle:
> Effectivement le override est de trop et je ne peux pas utiliser le
> nom de la superclasse, mais il y a un truc que je ne pige pas.
> Shématiquement, j'imaginais qu'il fallait recopier la classe quelque
> part, écraser la classe TextField par une nouvelle en créant un
> nouveau constructeur, et réassocier tout le prototypage de la classe
> originale (qui se trouve contenu sous un autre nom) sur la nouvelle
> classe TextField que je viens de créer. çà c'était en AS1. J'ai bien
> compris qu'il y avait maintenant 2 formes de déclarations (traits et
> prototype), et que çà ne se passe plus exactement comme avant. Mais
> dans tous les cas, le compiler est moins permissif qu'avant
> quelquesoit mon approche il m'envoit ch?!#!r.
> Ma question est : est ce que schématiquement çà fonctionne comme je
> viens de le décrire plus haut (avec des aménagements), ou l'overriding
> des classes natives n'est plus du tout permises dans les mêmes
> conditions?
>
> Ejoe
>
> On 25 nov, 12:54, ekameleon <[email protected]> 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 <[email protected]> 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...
>
> > > 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>
>
> > > --
> > > Vous recevez ce message, car vous êtes abonné au groupe Google
> > Groupes FCNG.
> > > Pour envoyer un message à ce groupe, adressez un e-mail à
>
> > [email protected].> Pour vous désabonner de ce groupe, envoyez un
> > e-mail à l'adresse
>
> > [email protected].> Pour plus d'options, consultez la page
> > de ce groupe :
>
> >http://groups.google.com/group/fcng?hl=fr
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes FCNG.
Pour envoyer un message à ce groupe, adressez un e-mail à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
[email protected].
Pour plus d'options, consultez la page de ce groupe :
http://groups.google.com/group/fcng?hl=fr