Hi everyone,
I have an array of display objects that are simple scattered circles on the stage. My goal is to have them move around randomly within, say, a 5/10 pixel radius/range from their original x and y. Sort of like fireflies, but not as jittery and fast, I’m looking for something real smooth.
What I have now is something like this:
for (var g=0; g < total_circles; g++)
{
circle = new DrawCircle( 3, 0xFFFFFF );
circle.x = random; circle.y = random;
addChild(circle);
jitter = JitterCircle( circle, 10 );
}
So as you can see for each circle I call a class JitterCircle and pass it two values: the actual display object and the range I want my circle to fly around in.
Inside JitterCircle I have this:
package
{
import flash.display.*;
import flash.events.*;
import com.greensock.*;
import com.greensock.easing.*;
public class JitterCircle
{
private var circle:DisplayObject;
private var cX:Number;
private var cY:Number;
private var range:Number;
private var tx:Number;
private var ty:Number;
private var xtemp:Number;
private var ytemp:Number;
private var xd:Number;
private var yd:Number;
private var x0:Number;
private var y0:Number;
public function JitterCircle( target:DisplayObject, _range:Number )
{
circle = target;
tx = Math.random()*360;
ty = Math.random()*360;
xtemp = Math.random()/7;
ytemp = Math.random()/7;
xd = Math.random()*10+1;
yd = Math.random()*10+1;
x0 = circle.x;
y0 = circle.y;
circle.addEventListener( Event.ENTER_FRAME, on_frame );
}
private function on_frame( e:Event ):void {
var mc = e.currentTarget;
tx += xtemp;
ty += ytemp;
mc.x = x0 + Math.sin( tx ) * xd;
mc.y = y0 + Math.cos( ty ) * yd;
}
}
}
This actually works, this does make it fly around neatly like a drugged down firefly. However here’s my issue:
Now I have a series of actions on the site, and one of which is call out some of these circles and make those selected go to a certain position, but in order to do so I need to stop/remove that ENTER_FRAME listener inside the JitterCircle. How do I do this?
What I have so far from this action is a selection of the circles being moved, which goes something like this:
for (var p=0; p<array_circles.length; p++)
{
if ( input_array* == array_circles[p].lpu.letter.text )
{
used_circles_array.push( array_circles[p] );
}
}
I figure there’s something I need to do here to have it stop/remove the listener from these selected circles. I just can’t get my head around the how!!
I do I go IN that class, identify THAT particular circle and remove its ENTER_FRAME listener?
Thanks in advance for the help! Really appreciate it!