Вход

Просмотр полной версии : [AS2] Метод класса не вызывается..


KoLar
30.06.2008, 20:19
Вообщем, проблема в следующем. Пишу класс. Необходимо сделать так, чтобы с периодичностью вызывался метод этого класса. Делаю так:
class A
{
function A()
{
setInterval(f, 500);
}
private function f()
{
trace("f() called");
}
}
Всё работает отлично. Но, этот метод должен вызывать другой private-метод класса:
class A
{
function A()
{
setInterval(f, 500);
}
private function g()
{
trace("g() called");
}
private function f()
{
trace("f() called");
g();
}
}
Такой код почему-то не работает. Метод f() вызывается, а метод g() из метода f() нет. Если метод f() сделать public и вызвать явно - всё работает:
class A
{
function A()
{
setInterval(f, 500);
}
private function g()
{
trace("g() called");
}
public function f()
{
trace("f() called");
g();
}
}
// Где-то в коде...
a:A = new A();
a.f();
Значит проблема возникает именно из-за setInterval. Причину возникновения проблемы понять не могу. Подскажите, пожалуйста, в чём причина и как решить данную проблему.

Alex_beginner
30.06.2008, 20:54
Уважаемый KoLar!

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

setInterval(объект_где_находиться_метод, "имя метода", время_задержки);

Используя это синтаксис Вы сможете добиться поставленной цели.

KoLar
30.06.2008, 21:21
Спасибо огромное! Честно, первый раз слышу о таком синтаксисе setInterval