Bueno, ya que tenía que hacer algo como esto para un amigo, ya aprovecho se lo hago y de paso lo comparto contigo:
Primero que todo descarga
TweenMax, en este post está el link y la explicación de donde debes ponerlo, después crea un MovieClip pequeñito como una estrella o algo por el estilo de un tamaño pequeño por ejemplo 5 píxeles y lo vinculas en la biblioteca como "fuego", depués pega el siguiente código en el primer frame de tu película (preferentemente negra o azul oscura) y prueba:
Código ActionScript :
//---Importar TweenMax
import gs.TweenMax;
import gs.easing.*;
function piroTecnia(numero:Number, size:Number, estelas:Number, coordX:Number, coordY:Number):Void{
var cont:MovieClip = this.createEmptyMovieClip("movie" + this.getNextHighestDepth(), this.getNextHighestDepth());
cont._x = coordX;
cont._y = coordY;
var movie:MovieClip;
var fuego:MovieClip;
var scale:Number;
var angulo:Number;
var radian:Number;
var radio:Number;
var posX:Number;
var posY:Number;
var i:Number;
var j:Number;
var R:Number;
var G:Number;
var B:Number;
var color:Number;
var colorT:Color;
//---Crear todos los fuegos
for(i = 0; i < estelas; i++){
movie = cont.createEmptyMovieClip("movie" + i, i);
//---Generar los colores
R = Math.round(Math.random() * 255);
G = Math.round(Math.random() * 255);
B = Math.round(Math.random() * 255);
color = Number("0x" + String(R) + String(G) + String(B));
for(j = 0; j < numero; j++){
scale = Math.round(Math.random() * 100);
fuego = movie.attachMovie("fuego", "fuego" + j, j, {_xscale:scale, _yscale:scale});
fuego.cacheAsBitmap = true;
fuego._alpha = 0;
colorT = new Color(fuego);
colorT.setRGB(color);
}
}
//---Función de chequear la cantidad de fuegos que se han animado
var numeroFuegos:Number = 0;
var checkCount:Function = function():Void{
numeroFuegos++;
if(numeroFuegos == numero * estelas){
cont.removeMovieClip();
}
}
//---Animar los fuegos
var sum:Number = 0;
var explode:Number;
var anima:Function = function():Void{
movie = cont["movie" + sum];
for(j = 0; j < numero; j++){
angulo = Math.round(Math.random() * 360);
radian = angulo * Math.PI / 180;
radio = Math.round(Math.random() * (size / 2)) + size / 2;
posX = Math.sin(radian) * radio;
posY = Math.cos(radian) * radio;
fuego = movie["fuego" + j];
fuego._alpha = 100;
TweenMax.to(fuego, 2, {_x:posX, _y:posY, _alpha:0, ease:Cubic.easeOut, onComplete:checkCount});
}
sum++;
if(sum == estelas){
clearInterval(explode);
}
}
//---Ejecutar por tiempo
explode = setInterval(anima, 300);
}
//---Crear fuegos artificiales aleatorios
function buildFire():Void{
var numero:Number = Math.round(Math.random() * 50) + 50;
var size:Number = Math.round(Math.random() * 200) + 100;
var estelas:Number = Math.round(Math.random() * 3) + 1;
var posX:Number = Math.round(Math.random() * Stage.width);
var posY:Number = Math.round(Math.random() * Stage.height);
piroTecnia(numero, size, estelas, posX, posY);
}
var porTiempo:Number = setInterval(buildFire, 500);
buildFire();
quizás no esté muy realista, pero creo que puede satisfacerte.