Groups | Blog | Home
all groups > flash actionscript > march 2004 >

flash actionscript : works in stage but not in class



nolimits
3/21/2004 11:13:46 PM
can anyone tell me why the following code works if i put it on the actionscript
for the stage [followed by PreloadSequence(...) and startSpinning()] but the
same code doesn't work if i put it i a class and create an instance.

thanks in advance.

var pi = Math.PI;
var interval;
var t:Number;
var spinning:Boolean = false;

var _xMax:Number = 40;
var _yMax:Number = 15;
var _xOrigin = 0;
var _yOrigin = 0;
var _color = 0x999999;

var _interval:Number = 40; // pra dar 25 fps
var _speed:Number = 30; // qnt menor mais rapido
var _trails = 10; // quantos rastos aparecem


function PreloadSequence(xOrigin:Number, yOrigin:Number, xMax:Number,
yMax:Number, color, trails:Number) {
// trace(xOrigin + "," + yOrigin + "," + xMax + "," + yMax + "," + color +
"," + trails);
if(xOrigin != undefined) _xOrigin = xOrigin;
if(yOrigin != undefined) _yOrigin = yOrigin;
if(xMax != undefined) _xMax = xMax;
if(yMax != undefined) _yMax = yMax;
if(color != undefined) _color = color;
if(trails != undefined) _trails = trails;
// faltam aqui coisas :P
}

function createInstance(name:String, depth:Number) {
_root.createEmptyMovieClip(name, depth);
with(eval("_root." + name)) {
lineStyle(3, _color, 100);

moveTo( 0, -20);
lineTo( 0, 0);
moveTo(-5, -5);
lineTo( 0, 0);
moveTo( 5, -5);
lineTo( 0, 0);
}
}

function setPosition() {
createInstance("drop" + t, t);

var x = Math.round(_xMax * Math.sin((t * pi) / _speed)); // que
var y = Math.round(_yMax * Math.sin((t * pi) / (_speed / 2))); // equacoes
var r = Math.round( 135 * Math.cos((t * pi) / _speed) - 180); // lindas!

setProperty("drop" + t, _x, x + _xOrigin);
setProperty("drop" + t, _y, y + _yOrigin);
setProperty("drop" + t, _rotation, r);

var i:Number, a:Number;
for (i = t - 1; i > t - _trails; i--) {
if (i < 0) break;
a = getProperty("drop" + i, _alpha);
setProperty("drop" + i, _alpha, a - 100 / _trails);
}

removeMovieClip("drop" + (t - _trails));
t++;
}

function startSpinning() {
if(spinning) return;

spinning = true;
t = 0;
interval = setInterval(setPosition, _interval);
}

function stopSpinning() {
if(!spinning) return;

spinning = false;
clearInterval(interval);
}
nolimits
3/21/2004 11:23:44 PM
AddThis Social Bookmark Button