|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Вопрос по добавлению в список отображения
Друзья, элементарный вопрос, который меня поставил в тупик. Сделал простенький класс, который должен заниматься выводом информации на экран. В порядке теста практически один-в-один переписал код из книжки:
package view { import flash.display.* public class MinigameView extends Sprite { private var mainTextArea:Shape = new Shape(); public function MinigameView() { mainTextArea.graphics.lineStyle(1); mainTextArea.graphics.beginFill(0x0000FF, 1); mainTextArea.graphics.drawRect(125, 0, 150, 75); addChild(mainTextArea); } } } На экране ничего не появляется. Ошибок тоже правда нет в строгом режиме. Попробовал перенести код в основной класс - синий прямоугольник появился. Что я делаю не так? И ещё вопрос. Каким образом можно перевести запись цвета из RGB в вид 0x0000FF? |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Потому что нет "добавления в список отображения".
То есть _view то надо где-то добавить в дисплейлист. Что такое "запись цвета в RGB"? Как выглядит? 0x0000FF это R=00, G=00, B=FF.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Спасибо, wolsh, в который раз меня выручаешь советом.
А как практически добавить? Если в основном классе прописать что-то типа addChild(view.Minigame._view), то наверное это не получится из-за ошибки доступа к private переменной _view. Сделать её публичной? Плюс класс, в котором создаётся _view, также не принадлежит к основному классу приложения. На каком уровне это должно быть прописано? Почему-то нигде не смог найти вразумительного объяснения - все книжки и туториалы с ходу зарываются в нюансы форматирования и вывода, но ни разу не выходили с графикой за пределы основного класса. |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Appleman
Цитата:
|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Цитата:
UPD: После серии экспериментов и гугления допёр до такого решения. В основном классе приложения создал экземпляр класса GameView и добавил его в список отображения (и проверил, что он там действительно есть): Wolsh, ты это имел в виду в своём ответе? Теперь объекты из класса GameView начали попадать на экран, но только при условии добавления их в список отображения через префикс this. Последний раз редактировалось Appleman; 18.09.2017 в 17:03. |
|
|||||
Цитата:
addChild(view.Minigame._view) - это тоже почти валидно, если _view статическая переменная класса, но тут куча нюансов и пока не надо.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
Спасибо, я как раз и сам допёр. Но тогда у меня такой вопрос. Предположим, у нас есть несколько относительно независимых элементов приложения, которые имеют абсолютно разную разметку экрана, т.е. вообще всё, начиная от фона и заканчивая текстами, иконками и т.п. Пусть это будет несколько миин-игр, каждая из которых прописана в своём классе: MiniGame1, MiniGame2, MiniGameN. Я предполагал, что для каждой из них необходимо сделать по отдельному классу MiniGame1View, MiniGame2View, MiniGameNView. В зависимости от выбора пользователя все экранные объекты должны перерисовываться. Как управлять подобным хозяйством на уровне всего приложения, начиная с класса Main? Интересует именно концептуальный подход.
|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
я имел в виду, что если у нас единственный класс, который выводом на экран заведует, то всё просто - создаём его экземпляр в главном классе, добавляем там его в список отображения и пошло-поехало.
А если у нас не один, а несколько классов, непосредственно выводящих содержимое на экран? Ведь если в главном классе создать по экземпляру каждого, то будет бардак. Или я не прав? Как-то пока совсем не ощущаю логику управления выводом в AS3. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
бардак - это когда на кто-угодно добавляет дисплей обжекты на сцену.Правильно:есть один DO-контейнер, который создает дочерние DO-компоненты, каждый компонент рисует свои внутренности.Если надо выввести что-то специфичное(хинт или диалог поверх всего что есть на экране) - шлем контейнеру ивент с описанием что хотим.
|
Часовой пояс GMT +4, время: 23:52. |
|
« Предыдущая тема | Следующая тема » |
|
|