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:
1 2 3 4 5 | // importanzione della classe - se avete scaricato l'intera libreria Undolibrary // in alternativa potete scaricare solo il file MatrixArray.as e usarlo da solo import undolibrary.utils.MatrixArray; // var ma:MatrixArray = new MatrixArray(10, 10); |
Creata la matrice 10×10, come nel precedente esempio, possiamo manipolarla con utili metodi che rendono il nostro lavoro estremamente più rapido e semplice. In effetti la matrice 10×10 non è altro che un semplice Array lineare di 100 elementi!
clip()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /** * Restitusice un porzione rettangolare della matrice nella forma MatrixArray * * @param (uint) sx Coordina x del taglio * @param (uint) sy Coordina y del taglio * @param (uint) cw Dimensione orizzontale del taglio * @param (uint) ch Dimensione verticale del taglio * @result (MatrixArray) Una nuova matrice cw x ch * */ clip(sx:uint, sy:uint, cw:uint, ch:uint):MatrixArray // esempio // crea una nuova MatrixArray dalle coordinate 2,2 e larga e alta 5 var nma:MatrixArray = ma.clip(2, 2, 5, 5); |
fill()
1 2 3 4 5 6 | /** * Riempie la matrice con un determinato valore * * @param (any) Valore da inserire nella matrice */ fill(v:*); |
paintChar()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /** * Riempie la matrice con un (solo) carattere prelevato da una stringa * di lunghezza pari alle dimensioni della matrice stessa * * @param (string) v Stringa con la serie di caratteri da mappare * @result (boolean) true ok, false errore: stringa di lunghezza errata * */ paintChar(v:string) // esempio var ma:MatrixArray = new MatrixArray(10,5); ma.paintChar( '**********'+ '**##**##**'+ '**********'+ '**#####**'+ '**********' ); |
flipH(), flipV()
1 2 3 4 5 6 | /** * Esegue un'operazione di riflessione orizziontale(flipH) o * vertical (flipV) direttamente sulla matrice */ flipH():void flipV():void |
move()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | /** * Sposta il contenuto della matrice (eseguendo uno shift) nelle quattro * direzione di un offeset prestabilito */ move(ox:int, oy:int):void // var ma:MatrixArray = new MatrixArray(10,5); ma.paintChar( '**********'+ '**##**##**'+ '**********'+ '**#####**'+ '**********' ); ma.move(2,4); // output ****##**## ********** ****##### ********** ********** |
peek()
poke()
getString()
1 2 3 4 |








7
Non ci sono commenti per questo Post
Lascia un commento