Comunidad de diseño web y desarrollo en internet online

clase TransformMatrix para controlar degradados

Citar            
MensajeEscrito el 06 Sep 2004 08:45 pm
Bueno por una necesidad de usar una matriz 3X3 para los degradados , me encontre con esta clase para as1 q en teoria esta en el cd de flash mx , se llama TransformMatrix.as (suena erotico no ? XD )

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 XD XD XD )




no pienso hacer ningun tutorial sobre esto XD XD XD

salu2

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 

unknown
Citar            
MensajeEscrito el 06 Sep 2004 09:31 pm
Bueno, si no, entonces al menos dejame el link donde pueda descargar el FLA xD

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 06 Sep 2004 09:35 pm
no se puede (de momento) usa la clase de dibujo

Ya lo dare todo despues ...

salu2

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 

unknown
Citar            
MensajeEscrito el 06 Sep 2004 09:37 pm
¿¿¿¿¿ :? ?????

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 06 Sep 2004 11:34 pm
Bueno, tu horda de ejemplos (A excepción de este :( ) han sido publicados ;)

Muchisimas gracias por tu aporte para toda la comunidad

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

unknown
Citar            
MensajeEscrito el 07 Sep 2004 07:39 pm
Ya habia hablado de una clase para dibujar con as

bueno este ejemplo fue creado como ejemplo para la clase de dibujo

Y cuando la acabe ya avisare ...

salu2

Por buho29

510 de clabLevel

1 tutorial

7 ejemplos

 

unknown

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.