25 juin 2008
17 mai 2006
256 niveau de récursion ?!
À ma grande déception, on a droit qu'à 256 niveaux de récursion en ActionScript 2.0. C'est pas grand chose... Je tenais à le dire.
Je tiens aussi à dire au passage que j'ai toujours pas bien compris l'intérêt d'étendre un TextField... On m'a proposé de procéder autrement : écrire une fonction format(cible:TextField). Je trouve ça bizarre (ça donne de la vie à mon merveilleux blog quand j'y met ce que je ressens... j'ai besoin de peter là).
Je tiens aussi à dire au passage que j'ai toujours pas bien compris l'intérêt d'étendre un TextField... On m'a proposé de procéder autrement : écrire une fonction format(cible:TextField). Je trouve ça bizarre (ça donne de la vie à mon merveilleux blog quand j'y met ce que je ressens... j'ai besoin de peter là).
16 mai 2006
Les premiers pas
Bon comme je l'ai dis précédement, je compte commencer par essayer d'implémenter une extension d'un TextField. J'ai commencer par faire ceci dans un fichier TestField.as :
class vBot.experiment.TestField extends TextField {
_public static var className:String = "TestField";
_public static var classPackage:String = "vBot.experiment";
_public static var version:String = "0.0.1";
_public static var author:String = "vBot";
_public static var link:String = "http://www.0asa.be";
_// Constructeur
_public function TestField() {
__this.border = true;
__this.text = "cucu";
__this.selectable = false;
__this.setNewTextFormat ( new Format ("arial", 12)) ;
_}
}
Comme je compte continuer de coder, je me suis dis que je ferai bien de créer un beau package ! Au départ, j'ai voulu l'appeller 0asa, mais on ne peut visiblement pas utiliser un chiffre pour première d'un nom de package. Peu importe finalement. Donc, pour faire un package, c'est très simple, on crée un répertoire (vbot dans mon cas) . On peut organiser ses packages en sous-package avec des sous-répertoires (et sous-sous-...-sous-répertoires si on veut). Ensuite, on met les fichiers .as au bon endroit. Dans le cas de mon exemple, le fichier TestField.as se trouve dans le répertoire vBot/experiment. Notons au passage que l'on ne met qu'une classe par fichier et que ce fichier doit porter le même nom que la classe.
J'ai donc bêtement étendu (extends) la classe TextField existante. Les cinq premières variables de classe que j'ai déclarée ne servent pas à grand chose, c'est principalement du folklore dirons-nous (ça servira si je publie quelque chose sur mediabox un jour !).
J'ai ensuite défini un merveilleux constructeur, qui détermine si mon champ texte est équipé d'une bordure (border = true) et d'autres petites choses pas très intéressantes pour le moment. Je fais ça juste pour voir si j'arrive à faire quelque chose qui marche !
C'est bien beau, j'ai une classe TestField, fille de la classe TextField ! Il faut que je puisse m'en servir maintenant. Je crée un nouveau document flash (.fla) et je veux instancier un objet de ma nouvelle classe, j'ajoute une action sur la première frame de mon animation principale :
var t = new vBot.experiment.TestField();
Je sauve dans le répertoire qui contient le répertoire vBot, et je lance un preview de mon animation et c'est tout blanc, pas de signe de mon TestField ! Déception, je suis nul !
class vBot.experiment.TestField extends TextField {
_public static var className:String = "TestField";
_public static var classPackage:String = "vBot.experiment";
_public static var version:String = "0.0.1";
_public static var author:String = "vBot";
_public static var link:String = "http://www.0asa.be";
_// Constructeur
_public function TestField() {
__this.border = true;
__this.text = "cucu";
__this.selectable = false;
__this.setNewTextFormat ( new Format ("arial", 12)) ;
_}
}
Comme je compte continuer de coder, je me suis dis que je ferai bien de créer un beau package ! Au départ, j'ai voulu l'appeller 0asa, mais on ne peut visiblement pas utiliser un chiffre pour première d'un nom de package. Peu importe finalement. Donc, pour faire un package, c'est très simple, on crée un répertoire (vbot dans mon cas) . On peut organiser ses packages en sous-package avec des sous-répertoires (et sous-sous-...-sous-répertoires si on veut). Ensuite, on met les fichiers .as au bon endroit. Dans le cas de mon exemple, le fichier TestField.as se trouve dans le répertoire vBot/experiment. Notons au passage que l'on ne met qu'une classe par fichier et que ce fichier doit porter le même nom que la classe.
J'ai donc bêtement étendu (extends) la classe TextField existante. Les cinq premières variables de classe que j'ai déclarée ne servent pas à grand chose, c'est principalement du folklore dirons-nous (ça servira si je publie quelque chose sur mediabox un jour !).
J'ai ensuite défini un merveilleux constructeur, qui détermine si mon champ texte est équipé d'une bordure (border = true) et d'autres petites choses pas très intéressantes pour le moment. Je fais ça juste pour voir si j'arrive à faire quelque chose qui marche !
C'est bien beau, j'ai une classe TestField, fille de la classe TextField ! Il faut que je puisse m'en servir maintenant. Je crée un nouveau document flash (.fla) et je veux instancier un objet de ma nouvelle classe, j'ajoute une action sur la première frame de mon animation principale :
var t = new vBot.experiment.TestField();
Je sauve dans le répertoire qui contient le répertoire vBot, et je lance un preview de mon animation et c'est tout blanc, pas de signe de mon TestField ! Déception, je suis nul !
Je me lance
Je me lance dans le monde du blog ! Voilà, j'ai envie de partager mes décourvertes et ma compréhension en ce qui concerne le Flash et l'actionscript 2.0 (et bientôt le 3.0). J'avais commencé à faire du Flash il y a quelques années (au temps du Flash 4). Pas encore de POO à ce moment-là. J'ai envie de m'y replonger !
Parlons-en un peu de cette POO, elle n'est pas basée sur les classes comme le laisse croire la syntaxe du langage as2, elle est basée sur le concept de prototype. Ca n'a pas beaucoup d'importance pour faire quelque chose de relativement simple, en revanche quand on développer un projet de plus grande envergure il devient intéressant de connaître les fondements de ce qu'on utilise (sans déconner !).
Je commence rarement pas le début je crois. Dans un premier temps, j'aimerai écrire une classe qui modifie un champs de la classe TextField. Quand je dis que je ne commence pas par le début, c'est sans doute pour la bonne et simple raison que je m'attaque déjà à l'héritage sans avoir parlé des bases de la POO (désolé pour les "débutants").
Parlons-en un peu de cette POO, elle n'est pas basée sur les classes comme le laisse croire la syntaxe du langage as2, elle est basée sur le concept de prototype. Ca n'a pas beaucoup d'importance pour faire quelque chose de relativement simple, en revanche quand on développer un projet de plus grande envergure il devient intéressant de connaître les fondements de ce qu'on utilise (sans déconner !).
Je commence rarement pas le début je crois. Dans un premier temps, j'aimerai écrire une classe qui modifie un champs de la classe TextField. Quand je dis que je ne commence pas par le début, c'est sans doute pour la bonne et simple raison que je m'attaque déjà à l'héritage sans avoir parlé des bases de la POO (désolé pour les "débutants").
Inscription à :
Messages (Atom)