![]() |
Помогите разобраться в классах
В ООП я полный чайник, по мере сил пытаюсь разобраться, но выходит плохо. Каких-то винтиков видмо не хватает у меня в сером процессоре. Всвязи с чем вопрос - что это такое происходит?
Итак п.1. пишем класс с ОДНОЙ функцией. Код AS1/AS2:
Код внутри: Код AS1/AS2:
Код внутри тот же самый. Далее MAIN.SWF грузит в себя через МКЛ сначала ONE.SWF, потом , по окончании загрузки, TWO.SWF. По окончании каждой загрузки получаю свои хэлловорлды: Hello World Hello World Далее ввожу в класс еще одну функцию: Код AS1/AS2:
Код AS1/AS2:
Hello World undefined Если теперь перекомпилить и перезалить ONE.SWF, то все нормально: Hello World Hello iNils Что при этом получается? Первая загруженная и запущенная СВФ где-то регистрирует класс SERV и после этого все, что загружено после - работает только с методами этого первого класса? Но ведь локально сама по себе каждая свф-ка нормально отрабатывает все методы класса! Они же в нее вкомпилены? Как подгруженный клип может изначально блочить данное имя, инстанс или что это такое для всех последующих клипов, в которых так и так этот метод уже вкомпилен? То есть я эту багу нашел, но теперь при добавлении новых функций - мне приходитя перекомпиливать и перезаливать ВСЕ свф-ки, работающие с методом класса SERV. Это как-то можно вылечить, или что ж я не так делаю? :) А ну и естсесвнно что локально на компе - все рабоатет. Удаленно - нет. Сандбокс молчит. |
Классы в подгруженных swf инициализируются только в том случае, если их нет у загружающего swf.
|
Цитата:
UPD: ах, это AS2. Прошу прощения) |
Цитата:
|
Ага. Так, тема пошла. Думал уж никто не ответит.
1. Домены разные: MAIN Вконтакте ONE и TWO на моем сервере. Цитата:
Приходится перекомпилять именно ВСЕ, что юзает SERV и идет при этом ДО TWO. А эксперименты с бубном и всякими super global __proto__ public синглтонами и иже с ними - пробовать даже безполезно? Просто хочется хотя бы понять о чем читать в мануале. Чтобы разобраться... Пока на наводящее на правильные мысли ключевое слово в ваших комментах не наткнулся :( Присоветуйте хотя бы какой раздел ООП читать. |
Перед загрузкой другого swf надо делать delete _global.serv;
|
Идея понравилась! Попробовал. Тогда MAIN.SWF теряет доступ к методам класса и после подгрузки первой же SWF-ки более ничего не работает.
А переопределить методы существующего класса, или, точнее дополнить как-то - можно? Ну не знаю я ничего толком про это все :) |
Дополнить нельзя, только убить и создать через подгрузку другого SWF заново.
|
Мммм.... ну допустим у меня в MAIN лежит код:
Код:
my_btn.onRelease = function(){ serv.HEL1()}Сама подгруженная СВФ работает качественно, действительно с новым своим классом. Может надо еще что-то вроде написать _global.serv = this.serv? |
После подгрузки работоспособность должна восстановиться.
|
| Часовой пояс GMT +4, время: 21:13. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.