Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.03.2008, 16:59
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 1  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
По умолчанию Конфликт _lockroot-а с экземпляром пользовательского класса

Привет!
Прошу помощи в разрешении следующей проблемы:
Имею main.swf, которая загружается в оболочку написанную на Делфи. Клип main.swf на _root имеет контейнер page_mc (мувиклип) и набор управляющих символов (кнопок) Имеется класс ConnectorClass.as.
В первом кадре main.swf инициализируется объект
Код:
connector = new ConnectorClass();
который и обеспечивает обмен данными и командами между оболочкой и main.swf своими методами.
При загрузке в page_mc внешнего swf-клипа который не имеет в коде обращений к _root , все прекрасно работает. В противном случае подгруженный клип мертв в части работы его кода. Если же при загрузке клипа дать команду
Код:
this.page_mc._lockroot = true
то клип работает «на ура», а обращение к connector-у не отрабатывается. Попытка сделать объект connector глобальным не увенчалась успехом:
Так вообще не работает
Код:
 _global.connector = new ConnectorClass();
А так не помогает:
Код:
 _global.connector = null;
connector = new ConnectorClass();
Подозреваю, что во втором случае connector попросту переопределяется.
Вопрос: как сделать connector (его методы) видимым даже при применении lockroot?
Устранять обращения к _root в готовых клипах нет возможности, так как их порядка 1000 шт.
Спасибо.

Старый 19.03.2008, 19:08
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Я предлагаю создать тестовый класс A, поставить его за место ConnectorClass и посмотреть на его поведение в дебаггере.

Я не знаю, что там за код, но в моей практике был случай связанный с использованием _lockroot, который меня озадачил часа на 3. У меня была управляющая флешка, в которой работал конвейером, он запускал методы экземпляров различных классов через apply. Флешка могла загружать и выгражать 5 модулей. Но один из модулей был написал с использованием _root и пришлось воспользоваться _lockroot. Вот тут и возникла проблема, при включенном _lockroot, apply забивал на то, что unloadMovie вызывается как метод мувиклипа, и использовал глобальную функцию и в результате выгружая абсолютно все.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 20.03.2008, 18:26
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 3  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Спасибо, iNils, за совет.
Выкрутился я очень просто:
  • 1. При загрузке в "page_mc" любого клипа для проигрывания, я сразу после метода коннектора объявляю "this.page_mc._lockroot = true".
  • 2. На "main" есть кнопуля возврата в главное меню. Я сначала возвращаю главный рут "this.page_mc._lockroot = false", и только потом вызываю метод коннектора.

Но, один маленький "червячек" грызет разум: - как присвоить таки "_global" объекту класса? Что-то не получилось протестировать его на "глобальность".

Старый 20.03.2008, 18:52
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Тут в ветке AS3 идет бурная баталия на тему синглтона.
У себя в проектах, я не парюсь на эту тему, так как знаю, что это, это и вот это, у меня всегда в единственном экземпляре. Поэтому у данных классов, есть статичное свойство, которое возращает мне этот самый единственный экземпляр. Если я правильно понял, то у тебя тот самый случай, поэтому вместо того, чтобы лезть на прямую в глобал, не попробывать ли обратится за ссылкой на экземпляр к классу?

Кстати, а нельзя урезать проект до версии, чтобы осталась одна работающая ошибка? Интересно поискать причину.
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 20.03.2008 в 18:56.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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