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

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

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

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

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

Код 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
Адрес: Санкт-Петербург
Сообщений: 479
Спасибо, wolsh, в который раз меня выручаешь советом.

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

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

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

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

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Цитата:
Сообщение от 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
  № 6  
Ответить с цитированием
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
  № 7  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Цитата:
Сообщение от 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
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

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

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

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
я имел в виду, что если у нас единственный класс, который выводом на экран заведует, то всё просто - создаём его экземпляр в главном классе, добавляем там его в список отображения и пошло-поехало.
А если у нас не один, а несколько классов, непосредственно выводящих содержимое на экран? Ведь если в главном классе создать по экземпляру каждого, то будет бардак. Или я не прав? Как-то пока совсем не ощущаю логику управления выводом в AS3.

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

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

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

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

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


 


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


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