Très court extrait: Actionscript étendre un tableau en le shuffle méthode ()

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 :

1
2
Array = [ "ciao" , "come" , "va" ] ; var a: tableau = ["bonjour", "comment", "devrait"];
; au shuffle ().;

2 commentaires: «Très court extrait: Actionscript étendre un tableau en le shuffle méthode ()"

  1. 27 avril 2009 Charles :

    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 objet Array le voir comme une Array )
    En utilisant prototype je 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 :-)

  2. 27 avril 2009 Giovambattista Fazioli :

    @ Charles:

    quel avantage il ya à étendre une classe via le prototype de paramètre?

    Bonjour Charles, bonne observation! L'utilisation d' prototype remonte à l'époque où il était encore une Actionscript langage orienté objet "matures" comme il est la version 3.0. per creare una nuova classe Array personalizzata come hai indicato tu. Cependant, aujourd'hui encore, l'utilisation d' prototype se distingue de l'utilisation de la extends pour créer une nouvelle classe Array que vous avez indiqué que vous avez personnalisé. L'avantage, en fait, réside dans la possibilité d'étendre indistinctement tous les array , 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:

    1
    Array = new Array ( ) var test: tableau = new Tableau ()

    au lieu d'écrire

    1
    Array = new MyArray ( ) var test: tableau = new MonTableau ()

    all'uso di classi estese: L'avantage d'utiliser ou non proptotype dépend de la situation, mais en général il ya deux raisons pour préférer proptotype utilisation des extensions de classes:
    - proptotype code 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 MovieClip ou de Array ) 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 la Document Class dans 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.

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL