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 ), recupere shear(x,y) de un loco chino (el animal se hizo una clase matrix pero para aplicar en 3D )
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