![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Динамическое построение функции (вопрос к реал.знающим AS1 - 2)
for (var i = 0; i<libsreg.firstChild.childNodes.length; i++) {
libName[i] = libsreg.firstChild.childNodes[i].attributes.name;
libLink[i] = libsreg.firstChild.childNodes[i].attributes.link;
libExt[i] = libsreg.firstChild.childNodes[i].attributes.ext;
//trace(libName[i]+":"+libLink[i]+":"+libExt[i]);
/////////////////////////////////////
set("onMenuClick_"+libName[i], function () {
stat_txt.textColor = 0;
det = libLink[i];
ext = libExt[i];
mdm.prompt(libName[i]+" Library loaded");
// значения 'libName[i]' в сгенерённой функции остаются именно 'libName[i]', а не присвоенное libName[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. Заранее благодарю. С уважением Александр Козловский. Последний раз редактировалось iNils; 24.07.2006 в 20:06. |
![]() |
Часовой пояс GMT +4, время: 19:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|