Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Беда с eval, onLoad или ещё с чем - не пойму... (http://www.flasher.ru/forum/showthread.php?t=34679)

Budrik 19.07.2002 05:48

Беда с eval, onLoad или ещё с чем - не пойму...
 
Такая проблема: аттачу маленькие клипы к большому по клику вот этой функцией:
Код:

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 это грабли на которые не наступал только ленивый.


Часовой пояс GMT +4, время: 19:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.