![]() |
|
||||||||||
|
|||||
|
В ООП я полный чайник, по мере сил пытаюсь разобраться, но выходит плохо. Каких-то винтиков видмо не хватает у меня в сером процессоре. Всвязи с чем вопрос - что это такое происходит?
Итак п.1. пишем класс с ОДНОЙ функцией. Создаю ONE.SWF. Код внутри: Создаю TWO.SWF. Код внутри тот же самый. Далее MAIN.SWF грузит в себя через МКЛ сначала ONE.SWF, потом , по окончании загрузки, TWO.SWF. По окончании каждой загрузки получаю свои хэлловорлды: Hello World Hello World Далее ввожу в класс еще одну функцию: class serv { static function HEL1() { trace("Hello World") } static function HEL2() { trace("Hello iNils") } } Заливаю НОВЫЙ перекомпиленный TWO.SWF на сервер и после запуска получаю: Hello World undefined Если теперь перекомпилить и перезалить ONE.SWF, то все нормально: Hello World Hello iNils Что при этом получается? Первая загруженная и запущенная СВФ где-то регистрирует класс SERV и после этого все, что загружено после - работает только с методами этого первого класса? Но ведь локально сама по себе каждая свф-ка нормально отрабатывает все методы класса! Они же в нее вкомпилены? Как подгруженный клип может изначально блочить данное имя, инстанс или что это такое для всех последующих клипов, в которых так и так этот метод уже вкомпилен? То есть я эту багу нашел, но теперь при добавлении новых функций - мне приходитя перекомпиливать и перезаливать ВСЕ свф-ки, работающие с методом класса SERV. Это как-то можно вылечить, или что ж я не так делаю? ![]() А ну и естсесвнно что локально на компе - все рабоатет. Удаленно - нет. Сандбокс молчит. Последний раз редактировалось dark256; 14.12.2010 в 19:43. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Классы в подгруженных swf инициализируются только в том случае, если их нет у загружающего swf.
|
|
|||||
|
Цитата:
UPD: ах, это AS2. Прошу прощения)
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Об AS2, да.
|
|
|||||
|
Ага. Так, тема пошла. Думал уж никто не ответит.
1. Домены разные: MAIN Вконтакте ONE и TWO на моем сервере. Цитата:
Приходится перекомпилять именно ВСЕ, что юзает SERV и идет при этом ДО TWO. А эксперименты с бубном и всякими super global __proto__ public синглтонами и иже с ними - пробовать даже безполезно? Просто хочется хотя бы понять о чем читать в мануале. Чтобы разобраться... Пока на наводящее на правильные мысли ключевое слово в ваших комментах не наткнулся ![]() Присоветуйте хотя бы какой раздел ООП читать. Последний раз редактировалось dark256; 15.12.2010 в 03:54. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Перед загрузкой другого swf надо делать delete _global.serv;
|
|
|||||
|
Идея понравилась! Попробовал. Тогда MAIN.SWF теряет доступ к методам класса и после подгрузки первой же SWF-ки более ничего не работает.
А переопределить методы существующего класса, или, точнее дополнить как-то - можно? Ну не знаю я ничего толком про это все ![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Дополнить нельзя, только убить и создать через подгрузку другого SWF заново.
|
|
|||||
|
Мммм.... ну допустим у меня в MAIN лежит код:
Он работать после убиения и подгрузки новой СВФ перестает. Сама подгруженная СВФ работает качественно, действительно с новым своим классом. Может надо еще что-то вроде написать _global.serv = this.serv? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
После подгрузки работоспособность должна восстановиться.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|