![]() |
Динамическое построение функции (вопрос к реал.знающим AS1 - 2)
Динамическое построение функции (вопрос к реал.знающим AS1 - 2)
Код:
for (var i = 0; i<libsreg.firstChild.childNodes.length; i++) {В цикле генерим кучу callback-функций взависимости от содержания XML. Каждая нода = навая функция. На выходе реально получаем правильно названные функции, типа: onMenuClick_BLABLA() , при соответствующем атрибуте ноды XML: <k name="BLABLA" link="libs/BLABLA.dll" ext=".bla"></k>... ОДНАКО: Внутри функции значения, типа 'libName[i]' в сгенерённой функции остаются именно 'libName[i]', а не присвоенное libName[i] значение во время создания функции. Т.к. когда далее она вызывается зачения libName[i] равны undefined или последнему созданному в цыкле, это естественно "не катит"! Суть вопроса: Как это обойти? Как добиться того чтоб внутри уже скенерённой функции сохранялась строка вида не ' ext = libExt[i]; ' , a ' ext = "статическое значение"; ' , где "статическое значение" = статическое значение, полученное, при создании функции, из соответствующей ноды>атрибута> xml. Заранее благодарю. С уважением Александр Козловский. |
Прошу прощения за замороченность вопроса, просто я последнее время очень много проф.тех.документации написал...
|
как пишешь libName[i], так и получаешь (прикинь чему равна i на момент вызова твоих функций..)
можно сохранять идентификатор в самой функции и использовать его для доступа к данным при вызове: Код:
var libsreg=new XML('<list><k name="BLA" /><k name="BLABLA" /></list>'); |
~~~, прочтите пункт 3 http://www.flasher.ru/forum/showthread.php?t=79864 и больше так не делайте.
|
OK
Цитата:
To silin: Спасибо. Мысль хорошая. Как это я после трёх суток работы не додумался :). Реально Большое Спасибо! |
По пути вопрос: тело функции - заранее определенный код или там может быть в виде текста ActionScript ? Извините, если вопрос показался глупым.
|
там может быть что угодно, в том числе и кусок "текста ActionScript", но и воспринят он будет как строка..
дальше можно попробовать извратится пропарсить ее и с помощью eval, call, this[] или еще чего заставить плеер выполнить .. только оно тебе надо?.. |
Число для интереса. Правильно я понял, что вся та котовасия, ранее расписанная была для обеспечения большей скорости работы?
|
это вопрос к автору: какие резоны городить этот огород
я, если честно, их не вижу.. |
Цитата:
А этот конкретный код = Цикл объявления callback-функций для пунктов меню, таким же макаром генерируемых из полученой xml. Далее строки этого xml будут получаться с сервака. |
| Часовой пояс GMT +4, время: 03:54. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.