Flash8, matrix


Mi è capitato di imabttermi nella nuova libreria integrata nel nuovo flash 8: la libreria matrix.

Esigenza: deformare un rettangolo via codice in maniera da allungarlo e distorcerlo (skew) lungo la sua asse X.
Capire la matrice non è proprio la cosa più elementare ma grazie al prezioso aiuto trovato sul sito “senocular” sono riuscito a compiere quanto mi serviva!

vediamo un po’ i passi da fare:


per prima cosa vanno importate le librerie necessarie

import flash.geom.Transform;
import flash.geom.Matrix;

Supponendo che mc sia il nostro MovieClip da deformare, istanziamo il nostro oggetto:

var trans:Transform=new Transform(mc);

Adesso ammettiamo che abbiamo un valore W che cambia (che equivale ai pixel di larghezza desiderata per il nostro oggetto). Supponiamo inoltre che vogliamo inclinare il nostro oggetto di 45 gradi verso destra.
I valori da passare a matrix devono essere tra 0 e 2. quindi è necessario trasformare gli interi in numeri con virgola; si notera come a diventi cosi da 195 a 1,95 e che i gradi di inclinazione, il III parametro, sia -0,45:

var a:Number=W*0.1;
var skewM:Matrix=new Matrix(a,0,-0.45,1,0,0);

Adesso cerchiamo di capire a cosa corrispondono tutti quei numerini!!!
Vediamoli nell’ordine (a,b,c,d,tx,ty)

a – x scale
b – y skew
c – x skew
d – y scale
tx – x translation (position)
ty – y translation (position)

Esistono varie funzioni già impostate come matrix.scale(); e altre ma sinceramente mi hanno più confuso che altro perchè vanno a modificare solo alcuni valori di questi 6. Ho preferito modificare tutto in un’unica stringa!

Per capire meglio e a fondo la matrice utilizzata da Flash consiglio vivamente di visitare il sito http://www.senocular.com/flash/tutorials/transformmatrix/

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • RSS
  • StumbleUpon
  • Twitter
  • Reddit

Post a comment