Salut,
dans un autre thread je me plaignais de ne pas pouvoir ajouter
des methodes a la class String
j'etais meme pret a lancer une petition et tout :p
mais en fait c'est moi qui suis bete d'avoir pensé que AS3 compilait
dans la meme logique que AS2.
en lisant cela
http://groups.yahoo.com/group/flexcoders/message/24463
c'est devenu evident, ce n est pas la meme logique :)
On peut simplement augmenter les core objects AS3 en leur ajoutant
des methodes en passant par les prototype.
cela se passe comme ca
package
{
#include "String.as";
public class Toto
{
public function Toto()
{
var test:String = new String( "blah blah blah" );
test = test.trim(); //on a declaré String.prototype.trim dans
String.as
}
}
}
simple et efficace, j adore :)
petits desavantages:
- il n'y aura pas de compile-time type check sur ces methodes
(mais n'oubliez pas que le runtime type check lui reste valide)
- il se peut que vous ayez a supprimer le param -strict a la compilation
Apres on peut s'arranger pour avoir presque le meilleur des deux mondes
en combinant ces 2 techniques:
- ajout dans les prototype et compilation sans -strict
- compilation avec -strict et on load la lib augmentant les prototype avec
ApplicationDomain
Si plus tard Macromedia fournit les outils pour pouvoir recompiler
Global.as en Global.abc
on pourra meme avoir un compile-time check sur ces methodes
comme avec ce qu'il est possible defaire deja avec AS2
(cad faire un #include et ajouter les methodes intrinsic correspondantes
dans les core class)
zwetan
________________________________________
FlashCodeurs Next Generation
news://
FCNG.buRRRn.com/flexcodeurs
________________________________________
admin blog:
http://www.zwetan.com