Undolibrary MatrixArray: un’estensione della classe Array
Lunedì 15 Settembre, 2008MatrixArray è 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:
-
// 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 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()
-
/**
-
* 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()
-
/**
-
* Riempie la matrice con un determinato valore
-
*
-
* @param (any) Valore da inserire nella matrice
-
*/
-
fill(v:*);
paintChar()
-
/**
-
* 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()
-
/**
-
* Esegue un'operazione di riflessione orizziontale(flipH) o
-
* vertical (flipV) direttamente sulla matrice
-
*/
-
flipH():void
-
flipV():void
move()
-
/**
-
* 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()
-
/**
-
* Restituisce il contenuto della matrice alle coordinate x, y
-
*/
-
peek(x:uint, y:uint):*
poke()
-
/**
-
* Imposta il contenuto della matrice alle coordinate x, y
-
*/
-
poke(x:uint, y:uint):void
getString()
-
/**
-
* Usato spesso per il debug restituisce la matrice nxm come stringa
-
*/
-
getString():String





















Lascia un commento