Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Куда записываются классы при регистрации с помощью Object.registerClass() (http://www.flasher.ru/forum/showthread.php?t=122132)

Волгоградец 03.03.2009 11:07

Куда записываются классы при регистрации с помощью Object.registerClass()
 
Вложений: 1
Привет. Недавно столкнулся с проблемкой, решил, но непонятки остались. Имеем два swf - test1.swf и test2.swf. В них есть символ с таким кодом:
Код AS1/AS2:

test1.swf
#initclip
function Clip():Void{}
Clip.prototype = new MovieClip();
Object.registerClass("Clip", Clip);
Clip.prototype.test = function():Void{
        trace("TEST_1");
}
#endinitclip

В test2.swf то же самое, меняю только trace("TEST_2").

Так вот, если теперь я гружу в main.swf эти флэшки последовательно (по onLoadInit()), то все ок. Если же я пытаюсь грузить их однопоточно - т.е. одновременно и для каждого свой лоадер, то два раза выполняется trace("TEST_1")!
Или же если я меняю строку в test2.swf
Код AS1/AS2:

Object.registerClass("Clip", Clip);

на
Код AS1/AS2:

Object.registerClass("Clip2", Clip);

без изменения линкажа в библиотеке, то также дважды выполняется trace("TEST_1")!
Единственное что мне приходит в голову - это то что эти классы записываются куда-то в глобальную область видимости и каким-то образом перекрывают друг друга. Но разве они не должны принадлежать таймлайну каждого из подгружаемых мувиков?
Фуф, чувствую что не понятно объяснил, извиняйте.

iNils 03.03.2009 12:54

Все классы хранятся в _global. Соответственно класс с одним именем может быть только один.

Волгоградец 03.03.2009 12:59

Мда. Вот и ответ на мой вопрос. Но интересно - ведь у каждой флэшки свой _global, пока она не подгружена, так? А когда подгружаем эти флэшки то что происходит? Все скидывается в один глобал? И почему не создается уникальное имя класса при подгрузке - что-то типа пакета? Как быть, если случайно окажутся одинаковые имена у совершенно разных классов подгружаемых флэшек?

CrazyFlasher 03.03.2009 13:01

для этого есть AS3, где такие проблемы легко решаются :)

iNils 03.03.2009 13:15

Цитата:

Но интересно - ведь у каждой флэшки свой _global, пока она не подгружена, так? А когда подгружаем эти флэшки то что происходит? Все скидывается в один глобал?
Да.
Цитата:

И почему не создается уникальное имя класса при подгрузке - что-то типа пакета?
За этим должен программист следить.
Цитата:

Как быть, если случайно окажутся одинаковые имена у совершенно разных классов подгружаемых флэшек?
Вот для этого пакеты и создаются.
Цитата:

для этого есть AS3, где такие проблемы легко решаются
Причем тут AS3? Пакеты можно и в AS1 и AS2 сделать.

Волгоградец 03.03.2009 13:18

Я то знаю что AS3.0 - это круто. Но мы пока на втором сидим (...
Спасибо.


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

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