con ella lo puedes hacer todo con los degradados girar , sesgar ,y sin complicarte la vidad con mates y matrices , y aun me falta por recuperar un metodo skew (si alguien tiene el cd q lo mire , gracias
La he pasado a as2 sin tocar nada , se puede mejorar pero si funciona pa q complicarme ...
Código :
////////////////////////////////////////////////////////////////////////////////////////
class TransformMatrix {
var a:Number; var b:Number; var c:Number;
var d:Number; var e:Number; var f:Number;
var g:Number; var h:Number; var i:Number;
var empty:Boolean;
function TransformMatrix() {
empty = true;
}
function isEmpty():Boolean {
return empty;
}
function init(A:Number, B:Number, D:Number, E:Number, G:Number, H:Number):Void {
a = A; b = B; c = 0;
d = D; e = E; f = 0;
g = G; h = H; i = 1;
empty = false;
};
function concat (m:TransformMatrix) {
if (isEmpty()) {
a = m.a; b = m.b; c = m.c;
d = m.d; e = m.e; f = m.f;
g = m.g; h = m.h; i = m.i;
} else {
var result = new TransformMatrix();
result.a = a*m.a + b*m.d + c*m.g;
result.b = a*m.b + b*m.e + c*m.h;
result.c = a*m.c + b*m.f + c*m.i;
result.d = d*m.a + e*m.d + f*m.g;
result.e = d*m.b + e*m.e + f*m.h;
result.f = d*m.c + e*m.f + f*m.i;
result.g = g*m.a + h*m.d + i*m.g;
result.h = g*m.b + h*m.e + i*m.h;
result.i = g*m.c + h*m.f + i*m.i;
a = result.a; b = result.b; c = result.c;
d = result.d; e = result.e; f = result.f;
g = result.g; h = result.h; i = result.i;
}
empty = false;
}
// para escalar el degradado , por defect es de 1 x 1 pxl
function scale (sx:Number, sy:Number){//
var m = new TransformMatrix();
m.init(sx, 0, 0, sy, 0, 0);
return concat(m);
}
//para desplazar
function translate (tx:Number, ty:Number){
var m = new TransformMatrix();
m.init(1, 0, 0, 1, tx, ty);
return concat(m);
}
//para girar (grados)
function rotate (r:Number){
// r is in degrees - must convert to radians
var rad = ( r / 180 ) * Math.PI;
var m = new TransformMatrix();
var cosVal = Math.cos(rad);
var sinVal = Math.sin(rad);
m.init(cosVal, sinVal, -sinVal, cosVal, 0, 0);
return concat(m);
}
// para sesgar (grados)
function shear (rx:Number, ry:Number){
var radx = (rx/180)*Math.PI;
var rady = (ry/180)*Math.PI;
var m = new TransformMatrix();
m.init(1, rady, radx, 1, 0, 0);
return concat(m);
}
}
////////////////////////////////////////////////////////////////////////////////////////
un ejemplo para usar (solo copy/pege):
Código :
import TransformMatrix;
_root.createEmptyMovieClip("mDibu", 1);
function pepe(ancho,alto,x,y) {
var colors = [0x0000FF, 0x00FF00, 0xFF0000];
var alphas = [100, 100, 100];
var ratios = [0, 127.5, 255];
var matrix = new TransformMatrix();
matrix.scale(ancho , alto/2);
matrix.rotate( 45 );
matrix.translate (ancho/2 , alto/2)
mDibu.clear();
mDibu.lineStyle(1, 0x000000, 100);
//matrix={ matrixType: 'box', x:0, y:0, w:ancho, h:alto/2, r:0}
mDibu.beginGradientFill("radial", colors, alphas, ratios, matrix);
mDibu.moveTo(x, y);
mDibu.lineTo(x+ancho, y);
mDibu.lineTo(x+ancho, y+alto);
mDibu.lineTo(x, y+ancho);
mDibu.lineTo(x, y);
mDibu.endFill();
}
pepe(200, 200,0,0);
y de paso aqui enseño el ultimo ejemplo q hago para la clase de dibujo , remato la ayudad y la subo (ya me tiene frito la cochina clase , creo q se doblo mi poblacion de canas
no pienso hacer ningun tutorial sobre esto
salu2

