Просмотр полной версии : Указатель на функцию
Привет всем.
Задача такая - имеется указатель на функцию (текстовая переменная, в которой хранится имя функции - ну к примеру MyVariable="MyFunction()"). Теперь нужно взять эту переменную и вызвать функцию, на которую она указывает (то есть MyFunction() ).
Аналог - вызов переменной по указателю делается с помощью eval(MyVariable). А тут никак не могу подобрать синтаксис, чтобы срабатывало.
Спасибо.
DeliMIter
06.01.2003, 18:33
functionName = "blood";
this[functionName]();
function blood() {
trace("Lots of BLOOD!!!");
}
Спасибо. Да, все получается. Правда, я хотел хранить в указателе и аргументы, но это не проблема, конечно. Придется их приклеивать отдельно.
Nox Noctis
06.01.2003, 18:42
можно и
eval(name)();
...но так, как написал делимитер - лучше
а если хочется извратиться с аргументами - можно можно строковыми функциями все расковырять...
только зачем - не понимаю... это получается что ты парсишь строку ради того чтобы вызвать функцию...
Nox Noctis, пожалуй так, как ты предлагаешь удобно делать, когда путь полностью хранится в указателе. Я был уверен, что пробовал этот вариант и безуспешно, но оказалось, что не догадался :)
Насчет аргументов - задача была такая - один мувик-прелоадер вызывается нужное число раз (с помощью аттача). При этом он осуществляет индикацию загрузки разных типов данных (если быть точнее - мувиков и xml-объектов). Каждый раз при вызове управляющая функция передает прелоадеру ряд аргументов (имя объекта, тип данных для текстовых сообщений и т. д.), в том числе - указатель на функцию с перечнем аргументов, которую надо запустить по окончанию загрузки. Если не парсить строку, то эти аргументы нужно передавать отдельно. Дело в том, что я еще не знаю - сколько и какие будут эти функции и сколько аргументов будет у каждой.
Nox Noctis
06.01.2003, 19:18
если ты пишешь в МХ, то из любой функции ты можешь получить массив переданных ей аргументов при помощи указателя arguments...
так что количество аргументов - не проблема, главное описать что с этими аргументами делать...
Действительно. Об этом я не подумал как-то. А что, в пятом это не работает?
DeliMIter
06.01.2003, 20:34
Не очень :D
[subway]design
06.01.2003, 22:14
arguments в пятерке прекрасно работают.
DeliMIter
06.01.2003, 22:57
Андокументед полный :cool:
[subway]design
07.01.2003, 00:27
но ведь работают :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.