Fragmento muy breve: Actionscript extender una matriz por el método aleatorio ()

Yo ya había hablado acerca de cómo implementar el método de reproducción aleatoria () en JavaScript y ActionScript . Me di cuenta, tuttaavia, no señalando que es capaz de extender Actionscript, Javascript de la misma manera, su objetivo Array :

1
2
3
prototype . shuffle = function ( ) { Amplia . prototipo. barajar = 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 = longitud este, i, j =. Matemáticas piso (. Matemáticas random () * i), x = esto [- i], el [i] =. este [j], este [j] = x);
}

Este código también se puede insertar dentro de una clase, por ejemplo en el constructor:

1
2
3
4
5
6
7
8
9
package {
Hello extends MovieClip { public class Hola extiende MovieClip {
Hello ( ) { Hola función pública () {
prototype . shuffle = function ( ) { Amplia . prototipo. barajar = 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 = longitud este, i, j =. Matemáticas piso (. Matemáticas random () * i), x = esto [- i], el [i] =. este [j], este [j] = x);
}
}
}
}

: A continuación, utilizar esta "extensión" es simplemente llamar a la meotodo shuffle() desde cualquier instancia de una array :

1
2
Array = [ "ciao" , "come" , "va" ] ; var a: array = ["hola", "cómo", "debería"];
; de shuffle ().;

2 comentarios: "fragmento muy corto: Actionscript extender una matriz por el método aleatorio ()"

  1. 27 de abril 2009 Charles :

    Hola, hace tiempo que leo tu blog, que está muy bien cuidado y tiene un montón de consejos e ideas no son malas. Tengo que preguntarte algo en este blog, una cosa que no me queda claro qué ventaja hay en la extensión de una clase a través del parámetro prototype ?
    Me suelen utilizar una clase de "MyArray extends Array" , que implementa los métodos adicionales que necesita, y en mis proyectos, los. ) (Muchas gracias a las funciones de polimorfismo que desea que un objeto Array lo ven como una Array )
    Utilizando prototype pienso en "sucio" Objetos de mi diseño (y aparte, que debe ser incluido para ser más elegante posible? En el constructor de la clase de documento?)

    Yo te saludo y gracias por la info :-)

  2. 27 de abril 2009 Giovambattista Fazioli :

    @ Carlos:

    ¿qué ventaja hay en la extensión de una clase a través del parámetro prototipo?

    Hola Carlos, buena observación! El uso de prototype se remonta a los días en que era todavía una Actionscript lenguaje orientado a objetos "maduro", ya que es la versión 3.0. per creare una nuova classe Array personalizzata come hai indicato tu. Sin embargo, aún hoy en día, el uso de prototype se diferencia del uso de la extends para crear una nueva clase Array , como usted ha indicado ha personalizado. La ventaja, de hecho, radica en la posibilidad de extender indiscriminadamente a todas las array , sin tener que especificar el tipo de clase. En el método que ha utilizado usted, que está bien y es preciso, el uso de métodos o propiedades específicas está obligado dentro de su clase ( MyArray por ejemplo). Con el uso de prototipos, sin embargo, todos los arreglos se extienden, incluso los creados como:

    1
    Array = new Array ( ) var test: matriz = new array ()

    en lugar de escribir

    1
    Array = new MyArray ( ) var test: matriz = new MiMatriz ()

    all'uso di classi estese: La ventaja de usar o no proptotype depende de la situación, pero en general hay dos razones para preferir proptotype uso de clases extendidas:
    - proptotype menos código a escribir, sólo la definición de
    - Código ya escrito tiene la extensión sin tener que editar
    El segundo punto, en mi opinión, es la más interesante. ) su codice già scritto, senza doverlo modificare. Que permite ampliar los objetos Actionscriopt base (como MovieClip o Array ) de código ya escrito, sin necesidad de editarlos.
    o nel frame 0 a seconda del tipo di progetto. En cuanto a la inclusión del código, yo uso un simple de archivos (tipo array_ext.as ) que incluye al fabricante de la Document Class en el marco, o 0, dependiendo del tipo de proyecto.
    Espero haber respondido a sus preguntas ... si usted tiene preguntas adicionales, por favor póngase en contacto con nosotros.

Deja un comentario

XHTML PERMISO TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> código de inserción:
 <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