PDA

Просмотр полной версии : Ссылка на текущий экземпляр и setInterval


vooparker
29.12.2006, 13:29
Есть класс:

class ClassName {

private var $changeTime:Number = 500;

private var $auto:Boolean;

private var $intID:Number;

public function ClassName( auto:Boolean )
{
$auto = auto;
}
public function start ( ) : Void
{
if ( $auto )
{
change ( this );
$intID = setInterval ( change, $changeTime, this );
}
else
{
change ( this );
}
}
public function change ( instance:ClassName ) : Void
{
var instance:ClassName = instance;
trace ( instance );
}
}

Такой вариант работает. Но очень не нравиться, что при вызове метода change вне класса надо передавать в него ссылку на экземпляр.
Вариант:
public function change ( ) : Void
{
var instance:ClassName = this;
trace ( instance );
}

не работает через setInterval.
Вопрос: можно ли как то решить проблему, не передавая ссылку на экземпляр в качестве аргумента функции?

vooparker
29.12.2006, 13:34
пока обошелся таким вариантом:

public function change ( instance:ClassName ) : Void
{
var instance:ClassName = ( instance == undefined ) ? this : instance;
trace ( instance );
}

silin
29.12.2006, 13:36
а то:
setInterval(functionReference:Function, interval:Number, [param1:Object, param2, ..., paramN]) : Number
setInterval(objectReference:Object, methodName:String, interval:Number, [param1:Object, param2, ..., paramN]) : Number

тебе второй вариант
$intID = setInterval (this, "change", $changeTime );

vooparker
29.12.2006, 13:48
2silin: спасибо большое.;)
Ушел читать хэлп :umnik2:

FourSide
29.12.2006, 14:14
Оппппа... А что такое $ перед переменной? По коду вроде не PHP....

vooparker
29.12.2006, 14:21
FourSide, $ просто символ, если свойство или метод закрытый их имя я начинаю с $. Кто-то использует знак _ для этих целей. Ну а мне удобней с долларом.=)