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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.07.2011, 12:36
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 21  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Цитата:
Сообщение от RaVeN-Nikma Посмотреть сообщение
Риторическое отступление:
На что можно изменить public static STAGE:Stage, кроме как на Stage или null, да и зачем его вообще менять, даже работая в команде. Вы же не работаете в кругу врагов, которые так и мечтают из своего класса в main.as в STAGE поставить null, чтобы все сломать )))
У Stage есть свойства которые можно изменять. Stage полон событий, на которые можно подписаться и забыть отписаться.

Статичный Stage это лень. Из-за него появляется сильное связывание, и классы становятся привязанными к своему месту. Мелкое обновление архитектуры повлечет за собой перетаскивание статичных ссылок.

Цитата:
У меня статическая ссылка на сцену используется для добавления разных окошек с предупреждениями, которые сами добавляются поверх всего остального, и сами же полностью удаляются при нажатии кнопки подтверждения.
А ещё удобнее сделать контроллер окон, который бы ловил всплывающие события от окон и решал закрывать окно или нет.

Старый 12.07.2011, 12:42
RaVeN-Nikma вне форума Посмотреть профиль Отправить личное сообщение для RaVeN-Nikma Посетить домашнюю страницу RaVeN-Nikma Найти все сообщения от RaVeN-Nikma
  № 22  
Ответить с цитированием
RaVeN-Nikma

Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
Вечная тема. Если много вложенных классов, то каждому кому нужен Stage давать ссылку, мне лично не удобно, тянешь ее за собой. Одному классу ссылка не нужна, зато его детям нужна, и все равно передаешь ему ссылку. Не удобно, и определенно не проще потом заменять куски, если придется.

Цитата:
Статичный Stage это лень. Из-за него появляется сильное связывание, и классы становятся привязанными к своему месту. Мелкое обновление архитектуры повлечет за собой перетаскивание статичных ссылок.
Добавил статичный Stage в main и теперь меняй архитектуру как хочешь, 100 или 1000 классов, ссылка всегда будет одна, и ничего не полетит.

Цитата:
У Stage есть свойства которые можно изменять. Stage полон событий, на которые можно подписаться и забыть отписаться.
ответ очевиден, не забудь отписаться, это уже обсудили выше. Если криво сделать, то и без статичной ссылки проблемы будут


Последний раз редактировалось RaVeN-Nikma; 12.07.2011 в 12:54.
Старый 12.07.2011, 12:44
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 23  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от RaVeN-Nikma Посмотреть сообщение
Вечная тема. Если много вложенных классов, то каждому кому нужен Stage давать ссылку, мне лично не удобно, тянешь ее за собой. Одному классу ссылка не нужна, зато его детям нужна, и все равно передаешь ему ссылку. Не удобно, и определенно не проще потом заменять куски, если придется.
У DisplayObject-ов ссылка и так появляется после добавления в display list.

Старый 12.07.2011, 12:52
RaVeN-Nikma вне форума Посмотреть профиль Отправить личное сообщение для RaVeN-Nikma Посетить домашнюю страницу RaVeN-Nikma Найти все сообщения от RaVeN-Nikma
  № 24  
Ответить с цитированием
RaVeN-Nikma

Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
Ваше мнение насчет, того что не DisplayObjects вообще не должны ничего слушать, я прочитал выше

Старый 12.07.2011, 12:52
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 25  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
А ещё удобнее сделать контроллер окон, который бы ловил всплывающие события от окон и решал закрывать окно или нет.
Нет. Мой вариант удобнее этого. Чтобы он ловил события от окон, нужно его еще подписать на эти события. В моем же случае окошко с предупреждением добавляется из любого места через статический метод WarningWindow.showWarning(text:String);
Цитата:
Статичный Stage это лень. Из-за него появляется сильное связывание, и классы становятся привязанными к своему месту. Мелкое обновление архитектуры повлечет за собой перетаскивание статичных ссылок.
Поэтому, класс в который записывается статическая ссылка нужно хранить в корневой директории проекта, и можно будет менять архитектуру как угодно

Цитата:
У DisplayObject-ов ссылка и так появляется после добавления в display list.
Бывают случаи, когда ссылка нужна еще до добавления


Последний раз редактировалось goodguy; 12.07.2011 в 12:56.
Старый 12.07.2011, 12:57
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 26  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от RaVeN-Nikma Посмотреть сообщение
Ваше мнение насчет, того что не DisplayObjects вообще не должны ничего слушать, я прочитал выше
Я этого не говорил. Вы меня невнимательно прочитали.

Добавлено через 30 секунд
Цитата:
Сообщение от goodguy Посмотреть сообщение
Бывают случаи, когда ссылка нужна еще до добавления
Пример, пожалуйста.

Старый 12.07.2011, 12:59
RaVeN-Nikma вне форума Посмотреть профиль Отправить личное сообщение для RaVeN-Nikma Посетить домашнюю страницу RaVeN-Nikma Найти все сообщения от RaVeN-Nikma
  № 27  
Ответить с цитированием
RaVeN-Nikma

Регистрация: Jan 2003
Адрес: Latvia, Riga
Сообщений: 161
Цитата:
нельзя, потому что не находящиеся в display list объекты вообще не должны ничего делать
Верно, эти слова расценил так

Старый 12.07.2011, 13:02
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 28  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Пример: контроллер клавиатуры, который сам по себе не является дисплей объектом и, соответственно, вообще не добавляется на сцену. Но подписать слушатель к сцене из него нужно. Соответственно, нужно либо передавать ему ссылку в конструкторе, либо использовать статическую (ну или передавать через сеттер, не важно)
Так же, используя статическую ссылку можно отписать сцену от какого либо события даже в объекте, который уже удален из всех контейнеров. Это быдлокодерство, не буду отрицать, но у меня есть код, который большую часть времени отписыват сцену от событий нормально, но время от времени почему-то выдает null reference. Решил статической ссылкой, ибо перелопачивать всю эту гору кода в лом

Старый 12.07.2011, 13:02
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 29  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от RaVeN-Nikma Посмотреть сообщение
Верно, эти слова расценил так
Я не это имел ввиду. Я имел ввиду, что DisplayObject, если он отсутствует на сцене, потенциально или только создан и ещё только будет инициализироваться, либо уже удалён и отписан от всего. События от Stage в эти моменты ему не нужны совершенно.
Про клавиатурные менеджеры я уже описывал выше, ссылка на Stage передаётся в конструкторе.

goodguy, с контроллером клавиатуры понятно, только единственный адекватный вариант — передать ему ссылку для работы снаружи. Что касается отписки, то до REMOVED_FROM_STAGE можно держать ссылку у себя любимого, затем при возникновении события отписаться и удалить ссылку. Опять же, я об этом писал пару постов назад.

И да, как уже говорил Bgg, это всё лень и подтверждения этому:

Цитата:
Сообщение от goodguy Посмотреть сообщение
в лом
Цитата:
Сообщение от RaVeN-Nikma Посмотреть сообщение
мне лично не удобно


Последний раз редактировалось etc; 12.07.2011 в 13:07.
Старый 12.07.2011, 13:05
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 30  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
И тем не менее. Серьезных аргументов против использования статической ссылки на сцену я не вижу.
Похоже это просто дело личных предпочтений

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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