PDA

Просмотр полной версии : Реально ли скриптом создавать другой скрипт?


Muchacho
13.04.2004, 20:26
У меня скриптом создаются новые кнопки. Можно ли так же скриптом создавать и обработчики событий для них?

Dindin
13.04.2004, 20:34
В том же месте, где создаешь кнопки определяй и события для них. Например

for (i=0;i<maxValue;i++)
{
_root.attachMovie ('button','button'+i,i);
_root['button'+i].onRelease = function ()
{
getURL ('page'+i+'.html','_blank');
}
}

Dindin
13.04.2004, 20:45
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
Большое тебе спасибо!

Dindin
13.04.2004, 21:02
:^) Приходите еще :)

Iv
14.04.2004, 21:49
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

- в общем говоря, предпочтительней создавать одну функцию для всех, использующую переменные текущего объекта, чем для каждого объекта создавать собственную функцию.
сорри, не стерпел %)

Dindin
14.04.2004, 21:59
2BitSky Как ты намерен создавать неименованную событийную функцию и при этом передавать ей параметры (поделись, может я чего-то не знаю? Или не учитываю)

Nox Noctis
14.04.2004, 22:29
Dindin, только без паники :)

ты создашь maxValue физически РАЗНЫХ функций, но идентичных по содержанию.

а тебе подсказывают, что лучше создать ОДНУ функцию, и всем объектам раздать ссылки на неё.

вот и всё :)

Iv
14.04.2004, 22:35
видимо не знаешь.
именованых функций не существует.
- странно, да?
а именно так это дело и обстоит.

существуют только безымянные функции и ссылки на них.

т.е.
this.myFunction = function () {}
- это не значит, что ты создал функцию в "this" и назвал ее "myFunction"

это значит, что ты создал в памяти компа безымянную функцию и ссылку на нее поместил в переменную this.myFunction

это относится ко всем объектам флэша - наследникам класса Object, каковыми являются практически все объекты во флэше.

Iv
14.04.2004, 23:02
- странно, что никто не отреагировал на провокацию:
наследникам класса Object, каковыми являются практически все объекты во флэше

Iv
14.04.2004, 23:03
oops

Dindin
14.04.2004, 23:11
Я код не прочитал :) Подумал, что это - quote :^)

Учут и учут, прям как маленького :) :)

Nox Noctis
14.04.2004, 23:13
Оригинал написал(а) BitSky
- странно, что никто не отреагировал на провокацию:

ту такая расплывчатая формулировка, что нет никакого смысла спорить :)

ты ведь умный.. сможешь объяснить что хотел сказать, сто бы на самом деле ты ни сказал в тот момент :))

и тут дело очень запутанное, правда.

к примеру вот чьими, если не секрет, наследниками являются объекты, возвращаемые функциями Color.getTransform, Sound.getTransform, TextField.getTextExtent...

бьюсь об заклад что они являются наследниками класса Обджект. только это НИКАК не доказать - у них просто нет свойств __proto__ и constructor :)) (в семёрке это исправили)

Iv
15.04.2004, 14:44
Ну в общем это и имелось ввиду.
В доках макромедии такие объекты иногда называются ассоциативным массивом.
Я так полагаю, что все встает на свои места, если предположить, что класс Object является наследником того класса, к которому принадлежат все перечисленные тобой объекты.
Кстати и в 7ке осталось:
trace(new XML("<a b='c'>").firstChild.attributes.__proto__)