PDA

Просмотр полной версии : Беда с eval, onLoad или ещё с чем - не пойму...


Budrik
19.07.2002, 05:48
Такая проблема: аттачу маленькие клипы к большому по клику вот этой функцией:

function addJob(){
var n=_root.getNextDepth();
updateAfterEvent();
this.attachMovie("Job", "job"+n, n);
eval("job"+n)._x=startX;
eval("job"+n)._y=startY;
jobs_array.push(eval("job"+n));
eval("job"+n).setTerm(10); // НЕ РАБОТАЕТ!
//eval("job"+(n-1)).setTerm(10); // Так - работает
};


Сразу после добавления клипа надо вызвать его функцию setTerm(). Однако не получается. Если вызывать эту функцию у клипа добавленного в прошлый раз (n-1) то всё работает.
Я так понимаю, что клип просто не успевает подгрузиться (хотя установка _x и _y работает нормально).
Пытался сделать так:

eval("job"+n).onLoad=function(){
eval("job"+n).setTerm(10);
};

или так:

jobs_array[jobs_array.length-1].onLoad=function(){
jobs_array[jobs_array.length-1].setTerm(10);
};

не получается - onLoad вообще не срабатывает.

Budrik
19.07.2002, 11:27
Вообще, как onLoad работает?

Пишу например:

attachMovie("Oval", "mc", 1);

_root.mc.onLoad = function () {
trace("Loaded");
};

Овал появляется, надпись - нет.
Flash MX, player-6.

УильямБрэдберри
19.07.2002, 13:15
хитрый какой

у тя сначала сработал onLoad, когда ты вызвал метод attachMovie
а потом ты ему этот метод переназначаешь...
_root.mc.onLoad
ессно он уже пролетел...
и не сработал..

вывод -
метод должен определяться заранее, внутри СУЩЕСТВУЮЩЕГО объекта

либо методы объявляются для прототипа
MovieClip.prototype.onLoad = function () {
trace("Loaded");
};
attachMovie("Oval", "mc", 1);

УильямБрэдберри
19.07.2002, 13:20
если ты хочешь создать класс объектов, наследующих св-ва, но с отличными методами делай что-то вроде

MC = new MovieClip();
MC.__proto__.onLoad = function () {
trace("Loaded");
};
attachMovie("Oval", "mc", 1);
_root.mc = MC

Nox Noctis
19.07.2002, 17:56
а можно смухлевать:

_onLoad = function () {
trace("!!!");
delete this.onEnterFrame
};
this.attachMovie("Oval", "mc", 1, {onEnterFrame:_onLoad});

Budrik
20.07.2002, 23:03
Спасибо пребольшое!

Поиск по форуму удосужился сделать - почитал - похоже onLoad это грабли на которые не наступал только ленивый.