J'avais déjà parlé de la façon d'appliquer la méthode shuffle () en Javascript et Actionscript . J'ai réalisé, tuttaavia, pas en soulignant qu'il est en mesure d'étendre Actionscript, Javascript de la même manière, son objet Array :
1 2 3 | prototype . shuffle = function ( ) { Tableau . prototype. Shuffle = function () { var j : uint , x :*, i : uint = this . length ; i ; j = Math . floor ( Math . random ( ) * i ) , x = this [ -- i ] , this [ i ] = this [ j ] , this [ j ] = x ) ; for (var j: uint , x: *, i: uint = cette longueur, i, j =. Math sol (. Math random () * i), x = ce [- i], le [i] =. ce [j], le [j] = x); } |
Ce code peut également être inséré à l'intérieur d'une classe, par exemple dans le constructeur:
1 2 3 4 5 6 7 8 9 | {package Hello extends MovieClip { public class Bonjour MovieClip { Hello ( ) { Bonjour la fonction publique () { prototype . shuffle = function ( ) { Tableau . prototype. Shuffle = function () { var j : uint , x :*, i : uint = this . length ; i ; j = Math . floor ( Math . random ( ) * i ) , x = this [ -- i ] , this [ i ] = this [ j ] , this [ j ] = x ) ; for (var j: uint , x: *, i: uint = cette longueur, i, j =. Math sol (. Math random () * i), x = ce [- i], le [i] =. ce [j], le [j] = x); } } } } |
: Pour ensuite utiliser cette «extension» est tout simplement appeler le meotodo shuffle() de toute instance d'un array :










Bonjour, pour un moment que j'ai lu votre blog, qui est très bien entretenu et a beaucoup de conseils et d'idées ne sont pas mauvais. Je dois vous demander quelque chose sur ce poste, une chose que je ne suis pas clair quel avantage il ya à étendre une classe via le paramètre
prototype?J'utilise habituellement une classe
"MyArray extends Array", qui met en oeuvre des méthodes supplémentaires que j'ai besoin, et dans mes projets, les. ) (Un grand merci aux fonctions du polymorphisme qui veulent un objetArrayle voir comme uneArray)En utilisant
prototypeje pense à «sale» des objets dans ma conception (et en dehors, ce qui devrait être inclus pour être plus élégante que possible? Dans le constructeur de la classe document?)Je vous salue et vous remercie pour l'info
@ Charles:
Bonjour Charles, bonne observation! L'utilisation d'
prototyperemonte à l'époque où il était encore une Actionscript langage orienté objet "matures" comme il est la version 3.0. per creare una nuova classeArraypersonalizzata come hai indicato tu. Cependant, aujourd'hui encore, l'utilisation d'prototypese distingue de l'utilisation de laextendspour créer une nouvelle classeArrayque vous avez indiqué que vous avez personnalisé. L'avantage, en fait, réside dans la possibilité d'étendre indistinctement tous lesarray, sans avoir à spécifier le type de classe. Dans la méthode que vous avez utilisé vous, ce qui est bien et elle est précise, l'utilisation de méthodes spécifiques ou des propriétés est lié au sein de votre classe (MyArray, par exemple). Avec l'utilisation du prototype, cependant, tous les tableaux sont prolongées, même celles créées comme:au lieu d'écrire
all'uso di classi estese: L'avantage d'utiliser ou non
proptotypedépend de la situation, mais en général il ya deux raisons pour préférerproptotypeutilisation des extensions de classes:-
proptotypecode moins à écrire, juste la définition- Du code déjà écrit devient l'extension sans avoir à modifier
Le deuxième point, à mon avis, est la plus intéressante. ) su codice già scritto, senza doverlo modificare. Il vous permet d'étendre les objets Actionscriopt de base (tels que
MovieClipou deArray) du code déjà écrit, pas besoin pour l'édition.o nel frame 0 a seconda del tipo di progetto. Concernant l'inclusion de code, je utiliser un simple fichier (type
array_ext.as) qui inclut le constructeur de laDocument Classdans le cadre, ou 0 selon le type de projet.J'espère que cela répond à vos questions ... si vous avez d'autres questions, s'il vous plaît contactez-nous.