Here's some code - place it in a control clip and have a radial gradient filled clip offstage called "steam" to get it running.
This definitely needs a quick processor to look good, keeping the "parent" particle reasonably small helps a lot because drawing semi transparent images is one of the heaviest loads on the CPU and the less faded pixels it has to draw the better.
This runs pretty well for me at 25fps with about 40 particles on a P4 1.4GHz PC, drop "amount" if you have something slower and push it up if you have this year's model...
onClipEvent (load) {
//main variables
startX = 275;
startY = 300;
amount = 30;
//set up particles
for (i=1; i<amount; i++) {
duplicateMovieClip(_parent.steam, "steam"+i, i);
clip = _parent["steam"+i];
//give each particle random speed, drift and size
clip.speed = (Math.random()*3)+.6;
clip.fade = clip.speed/2;
clip.drift = (Math.random()*2-1)/7;
clip._xscale = Math.random()*50+50;
clip._yscale = clip._xscale;
//position on screen
clip._x = startX;
clip._y = startY;
}
}
onClipEvent (enterFrame) {
//move particles
for (i=1; i<amount; i++) {
clip = _parent["steam"+i];
clip._x += clip.drift;
clip._y -= clip.speed;
clip._alpha -= clip.fade;
//reset particles once they've faded out
if (clip._alpha<1) {
clip._x = startX;
clip._y = startY;
clip._alpha = 100;
}
}
}
Slainte