Comunidad de diseño web y desarrollo en internet online

efecto rayo en AS3

Citar            
MensajeEscrito el 12 Sep 2008 11:32 am
Muy buenas, he pasado el código del tip "Crear fractales usando la Clase Point de Flash 8" a AS3
www.cristalab.com/tips/42078/crear-fractales-usando-la-clase-point-de-flash-8.html

lo único que no he conseguido limpiar los rayos (rayo.clear() -> que en AS3 sería con removeChild(rayo)), si a alguien se le ocurre alguna idea para no tener tantos rayos en pantalla a la vez, sea bienvenido...

Bueno, aquí va el código en AS3:

Código :

import flash.display.*;
import flash.geom.*;
import flash.filters.*;

var existe:Boolean=false;
var rayo:MovieClip=new MovieClip;
var BF:GlowFilter=new GlowFilter(0xaaaaff,.5,16,16,2,1);

addEventListener(Event.ENTER_FRAME, nrayo);

function nrayo(e:Event){
   //trace("entramos en nrayo");
   var A:Point=new Point(200,0);
   var B:Point=new Point(mouseX, mouseY);   
   arco(A,B,2,.5);
}

function arco(A:Point, B:Point, anc:int, tz:Number){   
   //trace("entramos en arco");
   var dl:Number= Point.distance(A,B)/2;
   var ang:Number=Math.atan2(B.y-A.y,B.x-A.x)-.78;
   var C:Point=Point.interpolate(A,B,.5).add(Point.polar(dl*tz*(2*Math.random()-1),ang));
   
   rayo.graphics.lineStyle(anc, 0xc2c7fd,anc*50);
   trace("dl="+dl);
   if(dl>15){      
      arco(C,C.add(Point.polar(dl,ang+1.5*Math.random())),anc/1.9,tz);
   }
   if(dl>10){      
      arco(A,C,anc,tz);
      arco(C,B,anc,tz);
   }
   else{      
      rayo.graphics.moveTo(A.x,A.y),
      rayo.graphics.lineTo(C.x,C.y);
      rayo.graphics.lineTo(B.x,B.y);
      rayo.filters=[BF];
      addChild(rayo);
   }
   
   
   
}


Espero les sea de ayuda

Un saludo ^^

Por Uruviel

48 de clabLevel



Genero:Femenino  

msie7
Citar            
MensajeEscrito el 12 Sep 2008 03:07 pm
El sustituto de setInterval en AS3 es Timer:

Código ActionScript :

import flash.display.*;
import flash.geom.*;
import flash.filters.*;

var existe:Boolean=false;
var rayo:MovieClip=new MovieClip();
var BF:GlowFilter=new GlowFilter(0xaaaaff,.5,16,16,2,1);

var myTimer:Timer = new Timer(30, 0);
myTimer.addEventListener(TimerEvent.TIMER, nrayo);
myTimer.start();

function nrayo(e:Event):void {

   var A:Point=new Point(200,0);
   var B:Point=new Point(mouseX, mouseY);
   rayo.graphics.clear();
   arco(A,B,2,.5);

}

function arco(A:Point, B:Point, anc:int, tz:Number):void {
   //trace("entramos en arco");
   var dl:Number= Point.distance(A,B)/2;
   var ang:Number=Math.atan2(B.y-A.y,B.x-A.x)-.78;
   var C:Point=Point.interpolate(A,B,.5).add(Point.polar(dl*tz*(2*Math.random()-1),ang));

   rayo.graphics.lineStyle(anc, 0xc2c7fd,anc*50);

   if (dl>15) {
      arco(C,C.add(Point.polar(dl,ang+1.5*Math.random())),anc/1.9,tz);
   }
   if (dl>10) {
      arco(A,C,anc,tz);
      arco(C,B,anc,tz);
   } else {
      rayo.graphics.moveTo(A.x,A.y),
            rayo.graphics.lineTo(C.x,C.y);
      rayo.graphics.lineTo(B.x,B.y);
      rayo.filters=[BF];
      addChild(rayo);
   }
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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