Undolibrary MatrixArray: un’estensione della classe Array

lunedì 15 settembre, 2008

MatrixArray è un'estensione della classe Array di Actionscript 3.0, con lo scopo di semplificare la manipolazione di Array lineari usati come matrice n x m. Questa classe fa parte della libreria Undolibrary (nel package undolibrary.utils.MatrixArray) che potete scaricaricare liberamente da Google code tramite un qualsiasi client SVN (Subversion) all'indirizzo:
svn checkout http://undolibrary.googlecode.com/svn/trunk/
In alternativa potete scaricare il solo file MatrixArray.as. Un'esempio dell'uso di matrici lineari è stato dato in Actionscript 3.0 for beginners: lesson #2 dove abbiamo visto un suo semplice uso nella realizzazione del classico game Tic Tac Toe. Una matrice di questo tipo è paragonabile ad un'area rettangolare (wxh), proprio come una scacchiera. Con questa classe è possibile trattare una matrice di questo tipo proprio come un reticolo con delle sue coordinate x ed y. La MatrixArray l'ho usata, ad esempio, nello sviluppo di tutta la logica dell'editor di Emotions Icons per Skype: Skypemote.

Metodi

La classe MatrixArray estende quindi la normale classe Array aggiungendo una serie di utili metodi per gestire e manipolare matrici n x m. Per creare una matrice n x m è sufficente usare:

Actionscript:
  1. // importanzione della classe - se avete scaricato l'intera libreria Undolibrary
  2. // in alternativa potete scaricare solo il file MatrixArray.as e usarlo da solo
  3. import undolibrary.utils.MatrixArray;
  4. //
  5. var ma:MatrixArray = new MatrixArray(10, 10);

Creata la matrice 10x10, come nel precedente esempio, possiamo manipolarla con utili metodi che rendono il nostro lavoro estremamente più rapido e semplice. In effetti la matrice 10x10 non è altro che un semplice Array lineare di 100 elementi!

clip()

Actionscript:
  1. /**
  2.  * Restitusice un porzione rettangolare della matrice nella forma MatrixArray
  3.  *
  4.  * @param    (uint)            sx Coordina x del taglio
  5.  * @param    (uint)            sy Coordina y del taglio
  6.  * @param    (uint)            cw Dimensione orizzontale del taglio
  7.  * @param    (uint)            ch Dimensione verticale del taglio
  8.  * @result    (MatrixArray)    Una nuova matrice cw x ch
  9.  *
  10.  */
  11. clip(sx:uint, sy:uint, cw:uint, ch:uint):MatrixArray
  12.  
  13. // esempio
  14. // crea una nuova MatrixArray dalle coordinate 2,2 e larga e alta 5
  15. var nma:MatrixArray = ma.clip(2, 2, 5, 5);

fill()

Actionscript:
  1. /**
  2.  * Riempie la matrice con un determinato valore
  3.  *
  4.  * @param    (any)    Valore da inserire nella matrice
  5.  */
  6. fill(v:*);

paintChar()

Actionscript:
  1. /**
  2.  * Riempie la matrice con un (solo) carattere prelevato da una stringa
  3.  * di lunghezza pari alle dimensioni della matrice stessa
  4.  *
  5.  * @param    (string)    v Stringa con la serie di caratteri da mappare
  6.  * @result    (boolean)    true ok, false errore: stringa di lunghezza errata
  7.  *
  8.  */
  9. paintChar(v:string)
  10.  
  11. // esempio
  12.  
  13. var ma:MatrixArray = new MatrixArray(10,5);
  14. ma.paintChar(
  15.     '**********'+
  16.     '**##**##**'+
  17.     '**********'+
  18.     '**#####**'+
  19.     '**********'
  20. );

flipH(), flipV()

Actionscript:
  1. /**
  2.  * Esegue un'operazione di riflessione orizziontale(flipH) o
  3.  * vertical (flipV) direttamente sulla matrice
  4.  */
  5. flipH():void
  6. flipV():void

move()

Actionscript:
  1. /**
  2.  * Sposta il contenuto della matrice (eseguendo uno shift) nelle quattro
  3.  * direzione di un offeset prestabilito
  4.  */
  5. move(ox:int, oy:int):void
  6. //
  7.  
  8. var ma:MatrixArray = new MatrixArray(10,5);
  9. ma.paintChar(
  10.     '**********'+
  11.     '**##**##**'+
  12.     '**********'+
  13.     '**#####**'+
  14.     '**********'
  15. );
  16. ma.move(2,4);
  17.  
  18. // output
  19. ****##**##
  20. **********
  21. ****#####
  22. **********
  23. **********

peek()

Actionscript:
  1. /**
  2.  * Restituisce il contenuto della matrice alle coordinate x, y
  3.  */
  4. peek(x:uint, y:uint):*

poke()

Actionscript:
  1. /**
  2.  * Imposta il contenuto della matrice alle coordinate x, y
  3.  */
  4. poke(x:uint, y:uint):void

getString()

Actionscript:
  1. /**
  2.  * Usato spesso per il debug restituisce la matrice nxm come stringa
  3.  */
  4. getString():String

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

Non ci sono commenti per questo Post

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre>         // blocco generico
[code][/code]       // blocco generico
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL