Просмотр полной версии : Реально ли скриптом создавать другой скрипт?
Muchacho
13.04.2004, 20:26
У меня скриптом создаются новые кнопки. Можно ли так же скриптом создавать и обработчики событий для них?
В том же месте, где создаешь кнопки определяй и события для них. Например
for (i=0;i<maxValue;i++)
{
_root.attachMovie ('button','button'+i,i);
_root['button'+i].onRelease = function ()
{
getURL ('page'+i+'.html','_blank');
}
}
maxValue = 5;
width = 30;
for (i=0;i<maxValue;i++)
{
_root.attachMovie ('button','button'+i,i,{_x:width*i});
_root['button'+i].num = i;
_root['button'+i].onRelease = function()
{
getURL ('page'+this.num+'.html','_blank');
}
}
Точнее так, а то ссылка каждый раз будет ссылаться на page5.html
:^)
Muchacho
13.04.2004, 20:54
Большое тебе спасибо!
this.addOnRelease = function() {
var fnc = function () {
this.getURL(this.page_url, '_blank');
}, maxValue = 5, width = 30, i = 0, mc;
for (i; i<maxValue; i++) {
mc = _root.attachMovie('button', 'button'+i, i, {_x:width*i});
mc.page_url = 'page'+i+'.html';
mc.onRelease = fnc;
}
};
this.addOnRelease(), delete this.addOnRelease
- в общем говоря, предпочтительней создавать одну функцию для всех, использующую переменные текущего объекта, чем для каждого объекта создавать собственную функцию.
сорри, не стерпел %)
2BitSky Как ты намерен создавать неименованную событийную функцию и при этом передавать ей параметры (поделись, может я чего-то не знаю? Или не учитываю)
Nox Noctis
14.04.2004, 22:29
Dindin, только без паники :)
ты создашь maxValue физически РАЗНЫХ функций, но идентичных по содержанию.
а тебе подсказывают, что лучше создать ОДНУ функцию, и всем объектам раздать ссылки на неё.
вот и всё :)
видимо не знаешь.
именованых функций не существует.
- странно, да?
а именно так это дело и обстоит.
существуют только безымянные функции и ссылки на них.
т.е.
this.myFunction = function () {}
- это не значит, что ты создал функцию в "this" и назвал ее "myFunction"
это значит, что ты создал в памяти компа безымянную функцию и ссылку на нее поместил в переменную this.myFunction
это относится ко всем объектам флэша - наследникам класса Object, каковыми являются практически все объекты во флэше.
- странно, что никто не отреагировал на провокацию:
наследникам класса Object, каковыми являются практически все объекты во флэше
Я код не прочитал :) Подумал, что это - quote :^)
Учут и учут, прям как маленького :) :)
Nox Noctis
14.04.2004, 23:13
Оригинал написал(а) BitSky
- странно, что никто не отреагировал на провокацию:
ту такая расплывчатая формулировка, что нет никакого смысла спорить :)
ты ведь умный.. сможешь объяснить что хотел сказать, сто бы на самом деле ты ни сказал в тот момент :))
и тут дело очень запутанное, правда.
к примеру вот чьими, если не секрет, наследниками являются объекты, возвращаемые функциями Color.getTransform, Sound.getTransform, TextField.getTextExtent...
бьюсь об заклад что они являются наследниками класса Обджект. только это НИКАК не доказать - у них просто нет свойств __proto__ и constructor :)) (в семёрке это исправили)
Ну в общем это и имелось ввиду.
В доках макромедии такие объекты иногда называются ассоциативным массивом.
Я так полагаю, что все встает на свои места, если предположить, что класс Object является наследником того класса, к которому принадлежат все перечисленные тобой объекты.
Кстати и в 7ке осталось:
trace(new XML("<a b='c'>").firstChild.attributes.__proto__)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.