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

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

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
По умолчанию Вопрос по добавлению в список отображения

Друзья, элементарный вопрос, который меня поставил в тупик. Сделал простенький класс, который должен заниматься выводом информации на экран. В порядке теста практически один-в-один переписал код из книжки:

Код AS1/AS2:
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);	
		}
	}
}
Запускаю. Создаю экземпляр этого класса записью

Код AS1/AS2:
private var _view:MinigameView = new MinigameView;
На экране ничего не появляется. Ошибок тоже правда нет в строгом режиме. Попробовал перенести код в основной класс - синий прямоугольник появился. Что я делаю не так?

И ещё вопрос. Каким образом можно перевести запись цвета из RGB в вид 0x0000FF?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Потому что нет "добавления в список отображения".
То есть _view то надо где-то добавить в дисплейлист.

Что такое "запись цвета в RGB"? Как выглядит?
0x0000FF это R=00, G=00, B=FF.
__________________
Reality.getBounds(this);

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
Спасибо, wolsh, в который раз меня выручаешь советом.

А как практически добавить? Если в основном классе прописать что-то типа addChild(view.Minigame._view), то наверное это не получится из-за ошибки доступа к private переменной _view. Сделать её публичной?

Плюс класс, в котором создаётся _view, также не принадлежит к основному классу приложения. На каком уровне это должно быть прописано? Почему-то нигде не смог найти вразумительного объяснения - все книжки и туториалы с ходу зарываются в нюансы форматирования и вывода, но ни разу не выходили с графикой за пределы основного класса.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Почему-то нигде не смог найти вразумительного объяснения

http://flasher.ru/forum/showpost.php...96&postcount=9
__________________
Reality.getBounds(this);

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
Цитата:
Сообщение от undefined Посмотреть сообщение
бардак - это когда на кто-угодно добавляет дисплей обжекты на сцену.Правильно:есть один DO-контейнер, который создает дочерние DO-компоненты, каждый компонент рисует свои внутренности.Если надо выввести что-то специфичное(хинт или диалог поверх всего что есть на экране) - шлем контейнеру ивент с описанием что хотим.
А можно поподробнее? Как практически реализуется такой подход? Насколько я понимаю, должен быть один и только один класс-"рисовальщик", экземпляр которого мы добавим в ДО главного класса приложения, и в котором в конечном счёте будет происходить вывод на экран чего бы то ни было. На практике это будут десятки если не сотни разных объектов. Вопрос, как организовывать всё это хозяйство? Что за дочерние ДО-компоненты ты имеешь в виду?

Цитата:
Сообщение от Wolsh Посмотреть сообщение
Спасибо.

Старый 18.09.2017, 14:34
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 6  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Appleman
Цитата:
Почему-то нигде не смог найти вразумительного объяснения
Скачай учебник автора "Колин Мук". Там хорошее введение в as3. Читай и делай, тогда 80% твоих будущих вопросов сразу отпадет.

Старый 18.09.2017, 16:33
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 7  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
Цитата:
Сообщение от Godwarlock Посмотреть сообщение
Appleman
Скачай учебник автора "Колин Мук". Там хорошее введение в as3. Читай и делай, тогда 80% твоих будущих вопросов сразу отпадет.
Вот не поверишь, его и штудировал, по нему и делаю. А озвученного мною вопроса как раз не нашёл Вчера специально соотв. разделы второй части перечитал.

UPD: После серии экспериментов и гугления допёр до такого решения. В основном классе приложения создал экземпляр класса GameView и добавил его в список отображения (и проверил, что он там действительно есть):

Код AS3:
_view = new GameView;
addChild(_view);
trace(this.getChildAt(0).toString());
Wolsh, ты это имел в виду в своём ответе? Теперь объекты из класса GameView начали попадать на экран, но только при условии добавления их в список отображения через префикс this.


Последний раз редактировалось Appleman; 18.09.2017 в 17:03.
Старый 18.09.2017, 16:42
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Если в основном классе прописать что-то типа addChild(view.Minigame._view)
почти, в главном классе
Код AS3:
private var _view:MinigameView = new MinigameView(); //создаем экземпляр класса MinigameView 
addChild(_view); //добавляем его в список отображения
addChild(view.Minigame._view) - это тоже почти валидно, если _view статическая переменная класса, но тут куча нюансов и пока не надо.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 18.09.2017, 17:18
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 9  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
Цитата:
Сообщение от GBee Посмотреть сообщение
почти, в главном классе
Код AS3:
private var _view:MinigameView = new MinigameView(); //создаем экземпляр класса MinigameView 
addChild(_view); //добавляем его в список отображения
Спасибо, я как раз и сам допёр. Но тогда у меня такой вопрос. Предположим, у нас есть несколько относительно независимых элементов приложения, которые имеют абсолютно разную разметку экрана, т.е. вообще всё, начиная от фона и заканчивая текстами, иконками и т.п. Пусть это будет несколько миин-игр, каждая из которых прописана в своём классе: MiniGame1, MiniGame2, MiniGameN. Я предполагал, что для каждой из них необходимо сделать по отдельному классу MiniGame1View, MiniGame2View, MiniGameNView. В зависимости от выбора пользователя все экранные объекты должны перерисовываться. Как управлять подобным хозяйством на уровне всего приложения, начиная с класса Main? Интересует именно концептуальный подход.

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Сейчас вам расскажут про MVC. Но я не очень понял какие экранные объекты имеются в виду?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

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

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


 


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


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