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

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

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

Регистрация: Oct 2006
Сообщений: 2,281
в таком случае в этом коде не много смысла.Если у экрана есть ссылка на стейдж -this.stage, значит он уже туда добавлен и добавлять его снова имеет смысл только чтоб быстро переместить его поверх всего, что уже есть на стейдже.Все это сильно напоминает г****код.
Еще раз - экран не должен сам добавлять себя никуда.Может статься, что добавлять его надо будет не на стейдж, а в какой-нибудь контейнер.Экран должен оповестить ответственного что его надо показать .Аналогично в нужный момент он должен оповестить что пора его скрыть.

Старый 30.05.2016, 00:21
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 22  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
хм, я решил подобный вопрос иначе, мож поможет. У меня все классы(кроме одного) имеют ссылку на stage, дабы не морочиться кто кого должен добавлять. А дабы не писать спагетти, то у каждого класса есть список моих событий (своих наделал), на что и как реагировать. Нажал человек кнопку "play" кнопка отправило событие "NEW_PLAY". Все классы, которые должны как либо среагировать, подписаны на это событие и выполняют свой код. В итоге все классы общаются друг с другом только через события, зависимости минимальны, фактически можно отключать целые ветки кода и все будет работать, так же удобно включать новые классы, в одном месте общем написал this.addChild(new MyClass), что добавить его на сцену и всё, остальная логика реализуется внутри класса(ов)

Старый 30.05.2016, 09:04
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 23  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
ага, вот только если выяснится что надо, например, перенести все содержимое из стейджа в рут или еще куда придется править 100500 классов.

Старый 30.05.2016, 10:15
Azrael вне форума Посмотреть профиль Отправить личное сообщение для Azrael Найти все сообщения от Azrael
  № 24  
Ответить с цитированием
Azrael
 
Аватар для Azrael

Регистрация: Sep 2015
Сообщений: 69
Цитата:
Сообщение от undefined Посмотреть сообщение
в таком случае в этом коде не много смысла.Если у экрана есть ссылка на стейдж -this.stage, значит он уже туда добавлен и добавлять его снова имеет смысл только чтоб быстро переместить его поверх всего, что уже есть на стейдже.Все это сильно напоминает г****код.
Еще раз - экран не должен сам добавлять себя никуда.Может статься, что добавлять его надо будет не на стейдж, а в какой-нибудь контейнер.Экран должен оповестить ответственного что его надо показать .Аналогично в нужный момент он должен оповестить что пора его скрыть.
Да ссылка на stage у него есть, она собственно будет у всех экранов, игра простая состоит из 4 экранов которые по-очереди добавляются на stage (добавили 1, нажали next = убрали 1 добавили 2, во втором нажали next = убрали 2 добавили 3, в третьем нажали next = убрали 3 добавили 4) В этом случае если у меня не предусмотрен "обратный ход" предыдущий код верен?

По поводу ссылки - в main мне надо сделать так да?

Код AS3:
public static stage:Stage;
 
function Main() 
{
Main.stage = stage;
}
И отвественный уже будет добавлять экран таким образом:

Код AS3:
Main.stage.addChild(Screen);

Старый 30.05.2016, 13:45
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 25  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
если не планируешь код сильно расширять - пиши как удобнее.
Цитата:
По поводу ссылки - в main мне надо сделать так да?
Если Main - документ класс в этом нет необходимости т.к. у него и так всегда есть ссылка на стейдж -
this.stage.

Старый 30.05.2016, 20:58
Azrael вне форума Посмотреть профиль Отправить личное сообщение для Azrael Найти все сообщения от Azrael
  № 26  
Ответить с цитированием
Azrael
 
Аватар для Azrael

Регистрация: Sep 2015
Сообщений: 69
Цитата:
Сообщение от undefined Посмотреть сообщение
Если Main - документ класс в этом нет необходимости т.к. у него и так всегда есть ссылка на стейдж -
this.stage.
Если буду делать другой проект и по вашему совету через ответственного, ему нужна будет такая ссылка?

Старый 30.05.2016, 21:33
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 27  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Если Main - документ класс в этом нет необходимости т.к. у него и так всегда есть ссылка на стейдж - this.stage.
Если он не документ-класс хранить ссылку на корневой DO допустимо.
на форуме часто рекомендуют не цеплять ничего на стейдж, а все пихать в рут, т.к. стейдж не является DisplayObjectContainer и поэтому некоторые плюхи для него недоступны.Рут по большому счету тоже не является, но он допускает приведение к DisplayObjectContainer.

Старый 31.05.2016, 08:46
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 28  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
на форуме часто рекомендуют не цеплять ничего на стейдж, а все пихать в рут, т.к. стейдж не является DisplayObjectContainer
Если бы Stage не был DisplayObjectContainer, вам бы и не удалось ничего туда "пихать". Но Stage не является частью вашего приложения. Это контейнер, В КОТОРОМ находится ваше приложение (загруженный плеером ролик).
Цитата:
Рут по большому счету тоже не является, но он допускает приведение к DisplayObjectContainer.
Рут является DisplayObjectContainer просто по-определению. Не будь он контейнером, ему не стать рутом.
__________________
Reality.getBounds(this);

Старый 31.05.2016, 12:09
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 29  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Если бы Stage не был DisplayObjectContainer, вам бы и не удалось ничего туда "пихать". Но Stage не является частью вашего приложения. Это контейнер, В КОТОРОМ находится ваше приложение (загруженный плеером ролик).
Согласен тут был не прав.
Цитата:
Рут является DisplayObjectContainer просто по-определению. Не будь он контейнером, ему не стать рутом.
А вот тут не все так просто.Например
Код AS3:
trace(root is DisplayObjectContainer);//true
trace(root.tabEnabled);// compile time error(Error: Access of possibly undefined property tabEnabled through a reference with static type flash.display:DisplayObject.)
trace((root as DisplayObjectContainer).tabChildren);//без ошибок
хотя tabEnabled - родное свойство DisplayObjectContainer'а.
Т.е. рут по меньшей мере не обычный DOC.

Добавлено через 26 минут
Код AS3:
trace(root.getChildAt(0));
аналогично ошибка компиляции


Последний раз редактировалось undefined; 31.05.2016 в 12:37.
Старый 31.05.2016, 12:58
ObOs вне форума Посмотреть профиль Отправить личное сообщение для ObOs Найти все сообщения от ObOs
  № 30  
Ответить с цитированием
ObOs
 
Аватар для ObOs

Регистрация: Jul 2009
Сообщений: 149
Цитата:
Сообщение от undefined Посмотреть сообщение
Согласен тут был не прав.

А вот тут не все так просто.Например
Код AS3:
trace(root is DisplayObjectContainer);//true
trace(root.tabEnabled);// compile time error(Error: Access of possibly undefined property tabEnabled through a reference with static type flash.display:DisplayObject.)
trace((root as DisplayObjectContainer).tabChildren);//без ошибок
хотя tabEnabled - родное свойство DisplayObjectContainer'а.
Т.е. рут по меньшей мере не обычный DOC.

Добавлено через 26 минут
Код AS3:
trace(root.getChildAt(0));
аналогично ошибка компиляции
А если дождаться добавления на сцену?

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

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

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


 


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


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