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

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

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

Регистрация: Sep 2011
Сообщений: 17
По умолчанию Добавление на сцену из экземпляра класса

Добрый день, хотел бы улучшить гибкость своего проекта.
На данный момент в классе документа создается экземпляр класса, который не наследует отображаемые классы, а в нем уже создается спрайт, который надо вывести на экран. Сейчас я для этого использую статическую ссылку из класса документа, но при смене класса документа мне надо править все addChild'ы. Как избавиться от этого, НЕ передавая в класс NonDisplayedClass ссылку на сцену?

Что имеется сейчас:
Код AS3:
public class DocumentClass {
 
	import ..
 
	public static var stageRef;
 
	public function DocumentClass extends MovieClip() {
		Main.stageRef = stage;
		var NonDisplayedInstance:NonDisplayedClass = new NonDisplayedClass();
	}
 
}
Код AS3:
public class NonDisplayedClass {
 
	import ..
 
	public function NonDisplayedClass{
		var DisplayedObject:Sprite = new Sprite();
		// рисуем что-то в спрайте
		DocumentClass.stageRef.addChild(DisplayedObject);
	}
 
}

Старый 11.09.2011, 00:16
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
public class NonDisplayedClass {
 
	import ..
 
	public function NonDisplayedClass (root:DisplayObjectContainer){
		var DisplayedObject:Sprite = new Sprite();
		// рисуем что-то в спрайте
		root.addChild(DisplayedObject);
	}
 
}
Код AS3:
var NonDisplayedInstance:NonDisplayedClass = new NonDisplayedClass(super.stage);
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 11.09.2011, 00:20
Luixoru вне форума Посмотреть профиль Отправить личное сообщение для Luixoru Найти все сообщения от Luixoru
  № 3  
Ответить с цитированием
Luixoru

Регистрация: Sep 2011
Сообщений: 17
Цитата:
Код AS3:
var NonDisplayedInstance:NonDisplayedClass = new NonDisplayedClass(super.stage);
Цитата:
Сообщение от Luixoru Посмотреть сообщение
Как избавиться от этого, НЕ передавая в класс NonDisplayedClass ссылку на сцену?
Вот, я как раз просил не передавать в класс ссылку на сцену!

Передавать я догадался, но проблема в том, что тогда при разветвлении классов в каждый последующий надо будет продолжать передавать эту ссылку, что запутывает процесс, да и, наверное, жрет производительность.
Я надеялся на более простое решение

Старый 11.09.2011, 00:23
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Я лишь помог вам ответить на ваш вопрос.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 11.09.2011, 00:26
Luixoru вне форума Посмотреть профиль Отправить личное сообщение для Luixoru Найти все сообщения от Luixoru
  № 5  
Ответить с цитированием
Luixoru

Регистрация: Sep 2011
Сообщений: 17
Большое спасибо, но, формально говоря, Вы не соблюли условие вопроса, так что я все еще заинтересован в ответе на него.

Старый 11.09.2011, 00:29
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
В дебаговом плеере можно воспльзоваться LoaderInfo.getLoaderInfoByDefinition();
Иначе -- никак.

Добавлено через 1 минуту
А, можно! Просто пересмотрите архитектуру )
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 11.09.2011, 00:34
Luixoru вне форума Посмотреть профиль Отправить личное сообщение для Luixoru Найти все сообщения от Luixoru
  № 7  
Ответить с цитированием
Luixoru

Регистрация: Sep 2011
Сообщений: 17
Не знаком с этим классом, но, почитав туториал, понял, что в эту функцию нужно передавать значение объекта, чей объект LoaderInfo будет возвращен. И если это должен быть класс документа, как же его в таком случае передать? Если бы имели ссылку к нему - мы бы имели ссылку и к сцене.
Или я неправильно понимаю назначение метода?

Старый 11.09.2011, 00:37
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
LoaderInfo.getLoaderInfoByDefinition(this);
Добавлено через 1 минуту
Передаете далеко не значение. Ссылку.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 11.09.2011, 00:39
Luixoru вне форума Посмотреть профиль Отправить личное сообщение для Luixoru Найти все сообщения от Luixoru
  № 9  
Ответить с цитированием
Luixoru

Регистрация: Sep 2011
Сообщений: 17
Цитата:
Сообщение от dimarik Посмотреть сообщение
Добавлено через 1 минуту
А, можно! Просто пересмотрите архитектуру )
Пересмотреть? Вынести ссылку на объект "наружу" и добавлять в классе документа?
Передавать по цепочке ссылку на сцену?

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Недавно возился с чужим проектом, там все классы ГУИ были отнаследованы от EventDispatcher и имели паблик переменную типа Sprite, в которой все рисовалось. Соответсвтенно все кнопочки плашки и тп добавлялись addChild(obj.sprite). Мне надо было добавить событие в глубоковложенный рендерер. Как понимаете бабблинг работал через одно место.

Цитата:
А, можно! Просто пересмотрите архитектуру )
+1
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

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

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


 


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


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