Lost did this great particle volcano in the sources/experiments section:
http://kirupa.com/forum/showthread.php?t=80014
I am trying to modify it so it only “erupts” when a particular movieclip is clicked. I tried to put the code on said movieclips timeline and changed all path references (there are very few; i’m thinking only the code on the main timeline needs to be changed) but it is still firing off when I click anywhere on the stage.
Any ideas? :hr:
Code on main timeline of lost’s fla:
//define particle generation variables
var i, rain, pCount = 30, rate = 30;
//function to add a particle on the stage
function addParticle() {
i++;
attachMovie('particle', 'particle'+i, i, {_x:275, _y:385}).addGrav();
if (i>pCount) {
clearInterval(rain);
}
}
//function to clear all existing particles from the stage
function clearParticles() {
clearInterval(rain);
for (var clip in _root) {
_root[clip].removeMovieClip();
}
}
//function to reset and generate new particles when mouse is clicked
this.onMouseDown = function() {
clearParticles();
i = 0;
rain = setInterval(addParticle, rate);
};
Code on particle that is attached from library:
#initclip
//define particle restrictions
var restrictions = {left:0, right:550, top:0, bottom:400};
//define physics variables
var grav = 2, drag = .98, bounce = .9, rot = 5;
function Particle() {
this._xscale = this._yscale=Math.random()*(100-5)+5;
this.aFade = Math.random()*(3-1)+1;
this.xspeed = Math.random()*30-15;
this.yspeed = Math.random()*-60;
}
Particle.prototype = new MovieClip();
Object.registerClass("particle", Particle);
Particle.prototype.onEnterFrame = addGrav;
function addGrav() {
this._x = this._x+this.xspeed;
if (this._x+this._width/2>restrictions.right) {
this._x = restrictions.right-this._width/2;
this.xspeed = -this.xspeed*bounce;
}
if (this._x-this._width/2<restrictions.left) {
this._x = restrictions.left+this._width/2;
this.xspeed = -this.xspeed*bounce;
}
this._y = this._y+this.yspeed;
if (this._y+this._height/2>restrictions.bottom) {
this._y = restrictions.bottom-this._height/2;
this.yspeed = -this.yspeed*bounce;
}
if (this._y-this._height/2<restrictions.top) {
this._y = restrictions.top+this._height/2;
this.yspeed = -this.yspeed*bounce;
}
this.yspeed = this.yspeed*drag+grav;
this.xspeed = this.xspeed*drag;
if (Math.floor(this.yspeed) == 1) {
this._alpha -= this.aFade;
if (this._alpha<1) {
this.removeMovieClip();
}
}
this._rotation += this.xspeed*rot;
}
#endinitclip