Как вызвать именованную callback функцию в ActionScript

Рассмотрим ситуацию, в которой часто новички впадают в ступор (как, признаюсь, и я в свое время) — когда нужно вызвать функцию имя которой передается в переменной. Это достаточно просто, если знать что есть такая функция eval.

Сначала простой вариант:

function func() {
   trace('Выполнено');
}
var funcName:String = 'func';
eval(funcName)();

Теперь посложнее — пусть нам нужно вызвать эту фукнцию с параметром, да к тому же из метода класса. Чтобы обратится к функции расположенной вне класса, нужно использовать префикс _root.

Функция и вызов метода класса:

function func(val) {
   trace('Выполнено. Параметр: ' + val);
}
var myClass:MyClass = new MyClass();
myClass.callFunc('func');

Класс:

class MyClass {
   public function MyClass() {}
   public function callFunc(funcName) {
      var v:String = 'параметр';
      _root[eval(funcName)(v)];
   }
}

Вот и все — надеюсь, я ответил на ваши вопросы.

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <i> <strong> <b> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <br>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
CAPTCHA на основе изображений
Введите код с картинки