StarryStarryNightInit Actionscript
Table of contents | Previous document | Download StarryStarryNightInit.as | SWF!T Homepage RCSfile: StarryStarryNightInit.as,v Revision: 1.3 Date: 2003/03/05 15:17:41
Copyright 2003 Orgdot AS. All Rights Reserved. http://dev.swfit.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Init script for a single animated star.
author Olaf Havnes
version Revision: 1.3 Date: 2003/03/05 15:17:41
since SWFIT1.0
Are we the original clip ?
if (_name eq "star")
{
_visible = false;
stop ();
}
Hide the sub clips for now.
birth._visible = false;
growth._visible = false;
death._visible = false;
Life cycle data.
Parameters for our life cycle.
INCUBATE_MAX_LEN = 20;
SPARKLE_MAX_LEN = 70;
GROW_MAX_LEN = 120;
FADE_MAX_LEN = 60;
INCUBATE_MIN_LEN = 0;
SPARKLE_MIN_LEN = 40;
GROW_MIN_LEN = 40;
FADE_MIN_LEN = 30;
Set our specific life cycle
incubate = INCUBATE_MIN_LEN + random (INCUBATE_MAX_LEN - INCUBATE_MIN_LEN);
sparkle = incubate + SPARKLE_MIN_LEN + random (SPARKLE_MAX_LEN - SPARKLE_MIN_LEN);
glow = sparkle + GROW_MIN_LEN + random (GROW_MAX_LEN - GROW_MIN_LEN);
fade = glow + FADE_MIN_LEN + random (FADE_MAX_LEN - FADE_MIN_LEN);
Start counting frames.
life = 0;
Movement data.
The basic speeds are common for all particles.
INCUBATE_SPEED = 0.3;
SPARKLE_SPEED = 0.2;
GLOW_SPEED = 0.2;
FADE_SPEED = 0.1;
Parameters for the (cyclic) erratic movement.
AMPLITUDE_MAX = 30;
AMPLITUDE_MIN = 15;
AMPLITUDE_Y_DIVISOR = 2.0;
Pick a specific amplitude for the (cyclic) erratic movement.
amplitude = AMPLITUDE_MIN + random (AMPLITUDE_MAX - AMPLITUDE_MIN);
Parameters for our path through that amplitude.
AMPLITUDE_MAX_STEPS = 60;
AMPLITUDE_MIN_STEPS = 30;
Pick a specific number of steps through that amplitude.
steps = AMPLITUDE_MIN_STEPS + random (AMPLITUDE_MAX_STEPS - AMPLITUDE_MIN_STEPS);
Movement data - is empty, as we get the x/y coordinates from _parent when she clones us.
We're not going to mess with sin/cos functions here - instead we use the following iterating formula - see StarryStarryNightLoop.as for the rest of the algorithm:
s = Math.sin (Math.PI / steps);
s_0 = 0;
c_0 = amplitude;
s_1 = amplitude * s;
c_1 = amplitude * Math.cos (Math.PI / steps);
reverse_dir = random (50) > 25;
|
|