Jugando con el objeto potente y versátil Matrix (matriz), ligado a los cambios, se pueden hacer cosas extrañas. Estas herramientas se utilizan para aplicar transformaciones especiales a un objeto visual, como un Sprite. Puede, por ejemplo, escalar, rotar o girar (inclinación) un Sprite. e rotation ), per l'effetto Skew bisogna ricorrere direttamente alle matrici. Mientras las dos primeras funciones (escala y rotación) los objetos Sprite (no sólo) Poner a disposición directa de las propiedades ( scaleX / scaleY y rotation ), el efecto de sesgo debe apelar directamente a las matrices. Lo que me gustaría destacar aquí es que cuando se modifica un objeto gráfico todas sus coordenadas internas se mueven:
El código de este juego es:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | . MouseEvent ; flash.events de importación. MouseEvent ; . Matrix ; importaciones flash.geom. Matrix ; / / / / Bandera para detectar la mousedown Boolean = false ; var md: Boolean = false; / / / / Crear un frente de la pizarra Sprite = new Sprite ( ) ; var lvg1: Sprite = new Sprite (); . lineStyle ( 0 , 0xffffff ) ; . lvg1 gráficos lineStyle (0, 0xFFFFFF).; . beginFill ( 0x666666 ) ; .. lvg1 gráficos beginFill (0x666666); . drawRect ( 0 , 0 , 199 , 199 ) ; .. lvg1 gráficos drawRect (0, 0, 199, 199); . endFill ( ) ; lvg1 gráficos endFill ()..; lvg1 ) ; addChild (lvg1); = lvg1 . y = 30 ; lvg1 lvg1 x =. y = 30.; / / / / Crear la tabla inclinada Sprite = new Sprite ( ) ; var lvg2: Sprite = new Sprite (); . lineStyle ( 0 , 0xffffff ) ; . lvg2 gráficos lineStyle (0, 0xFFFFFF).; . beginFill ( 0x666666 ) ; .. lvg2 gráficos beginFill (0x666666); . drawRect ( 0 , 0 , 199 , 199 ) ; .. lvg2 gráficos drawRect (0, 0, 199, 199); . endFill ( ) ; lvg2 gráficos endFill ()..; lvg2 ) ; addChild (lvg2); / / / / Crear e impuso una matriz para la inclinación de la / / Junta lvg2 Matrix = new Matrix ( ) ; var myMatrix: Matrix = new Matrix (); / / Se inclina 25 grados : Number = Math . PI * 2 * - 25 / 360 ; ángulo var: Número = Matemáticas . * PI * 2 - 25 / 360; / / Apilador = 300 ; myMatrix tx = 300.; = 100 ; myMatrix ty = 100.; = Math . tan ( angle ) ; myMatrix b =. matemáticas tan (ángulo).; . matrix = myMatrix ; lvg2 transformar myMatrix = matriz..; / / / Evento / Pintura ( MouseEvent . MOUSE_DOWN , _onMouseDown ) ; . lvg1 addEventListener ( MouseEvent MOUSE_DOWN, _onMouseDown.); ( MouseEvent . MOUSE_MOVE , _onMouseMove ) ; . lvg1 addEventListener ( MouseEvent MOUSE_MOVE, _onMouseMove.); ( MouseEvent . MOUSE_UP , _onMouseUp ) ; . lvg1 addEventListener ( MouseEvent MOUSE_UP, _onMouseUp.); / / e : MouseEvent ) : void { función _onMouseDown (e: MouseEvent ): void { "_onMouseDown" ) ; trace ("_onMouseDown"); : uint = 0xffffff ; var c: uint = 0xFFFFFF; . graphics . lineStyle ( 10 , c , 1 ) ; ... y el objetivo de gráficos lineStyle (10, c, 1); . lineStyle ( 10 , c , 1 ) ; .. lvg2 gráficos lineStyle (10, c, 1); . graphics . moveTo ( e . localX , e . localY ) ; .. y el objetivo de gráficos moveTo (and. localX y localY)..; . moveTo ( e . localX , e . localY ) ; .. lvg2 gráficos moveTo (and. localX y localY.); md = true; } / / e : MouseEvent ) : void { _onMouseUp función (e: MouseEvent ): void { md = false; } / / e : MouseEvent ) : void { _onMouseMove función (e: MouseEvent ): void { "_onMouseMove" ) ; trace ("_onMouseMove"); md ) { if (md) { . graphics . lineTo ( e . localX , e . localY ) ; . y el objetivo de gráficos lineTo (and. localX y localY)...; . lineTo ( e . localX , e . localY ) ; .. lvg2 gráficos lineTo (and. localX y localY.); } } |
e non via x e y . Tenga en cuenta que las líneas 30 y 31, el segundo Sprite ( lvg2 ) se convierte a la Matrix y no en x y y .
Además, las líneas 46 y 58, las funciones de dibujo de sprites en inclinar mantener la misma forma que los de la parte delantera Sprite ( lvg1 ).










[...] Pintura Flash CS3: Efectos de la matriz de la matriz con la pintura de crear un Flash [...]