Psycho Tiger
10.09.2007, 15:11
Проблема такая:
Я загружаю класс, после вызываю его с параметрами.
Код класса:
class classes.dot extends MovieClip{
private var timeOut:Number;
function dot(obj:MovieClip,delay:Number){
timeOut=setInterval(this,"init",delay,obj);
}
function init(obj:MovieClip){
trace("Interval inited");
clearInterval(timeOut);
}
}
После, если я назначаю мс через linkage, все работает на ура.
Но если же я назначаю через new dot, то setInterval просто не видит функцию init. Дело не в имени функции - меня её пробовал.
Поиском пользовался, но все что нашел - отсуствие слова this в setInterval. Заранее благодарен.
Такс... вылез и 2 баг, похоже тоже из за области видимости...
class classes.dot extends MovieClip{
private var objxTween,objyTween,objwTween,objhTween;
private var timeOut:Number;
function dot(obj:MovieClip,delay:Number,nextObj:MovieClip){
//Initing dot
//timeOut=setInterval(this,"init",delay,obj);
obj._visible=false;
init(obj,nextObj);
}
public function init(obj:MovieClip,nextObj:MovieClip){
//clearInterval(timeOut);
obj._visible=true;
objwTween=new mx.transitions.Tween(obj, "_width", mx.transitions.easing.Elastic.easeOut, obj._width*5, obj._width, 1.7, true);
objhTween=new mx.transitions.Tween(obj, "_height", mx.transitions.easing.Elastic.easeOut, obj._height*5, obj._height, 1.7, true);
objhTween.onMotionFinished=function(){
//Creating lines
obj.lineStyle(2,0x000000,100);
obj.moveTo(obj.getBounds(_root).xMin,obj.getBounds(_root).xMax);
obj.lineTo(nextObj._x,nextObj._y);
}
}
}
В флэшке самой делаем код такой:
import classes.dot;
for (var i=1; i<=10; i++){
m=attachMovie("dot","dot"+i,i,{_x: random(200)+100, _y:random(200)+100});
if (i>1) new dot(m,10,z);
z=m;
}
Запускаем... все точки приземлятся, после этого они должны нарисовать между собой линии... самое интересное, что линии рисуются правильно, но не там где надо... С чем это может быть связано?
Я загружаю класс, после вызываю его с параметрами.
Код класса:
class classes.dot extends MovieClip{
private var timeOut:Number;
function dot(obj:MovieClip,delay:Number){
timeOut=setInterval(this,"init",delay,obj);
}
function init(obj:MovieClip){
trace("Interval inited");
clearInterval(timeOut);
}
}
После, если я назначаю мс через linkage, все работает на ура.
Но если же я назначаю через new dot, то setInterval просто не видит функцию init. Дело не в имени функции - меня её пробовал.
Поиском пользовался, но все что нашел - отсуствие слова this в setInterval. Заранее благодарен.
Такс... вылез и 2 баг, похоже тоже из за области видимости...
class classes.dot extends MovieClip{
private var objxTween,objyTween,objwTween,objhTween;
private var timeOut:Number;
function dot(obj:MovieClip,delay:Number,nextObj:MovieClip){
//Initing dot
//timeOut=setInterval(this,"init",delay,obj);
obj._visible=false;
init(obj,nextObj);
}
public function init(obj:MovieClip,nextObj:MovieClip){
//clearInterval(timeOut);
obj._visible=true;
objwTween=new mx.transitions.Tween(obj, "_width", mx.transitions.easing.Elastic.easeOut, obj._width*5, obj._width, 1.7, true);
objhTween=new mx.transitions.Tween(obj, "_height", mx.transitions.easing.Elastic.easeOut, obj._height*5, obj._height, 1.7, true);
objhTween.onMotionFinished=function(){
//Creating lines
obj.lineStyle(2,0x000000,100);
obj.moveTo(obj.getBounds(_root).xMin,obj.getBounds(_root).xMax);
obj.lineTo(nextObj._x,nextObj._y);
}
}
}
В флэшке самой делаем код такой:
import classes.dot;
for (var i=1; i<=10; i++){
m=attachMovie("dot","dot"+i,i,{_x: random(200)+100, _y:random(200)+100});
if (i>1) new dot(m,10,z);
z=m;
}
Запускаем... все точки приземлятся, после этого они должны нарисовать между собой линии... самое интересное, что линии рисуются правильно, но не там где надо... С чем это может быть связано?