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

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

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

Регистрация: Mar 2013
Сообщений: 290
caseyryan, вот оно как : )))))

Цитата:
Не верно. Она работает в любом классе, у которого в цепочке наследования есть DisplayObjectContainer
Хм, интересно, но ведь тогда следующие коды (объект Ellipse1 создан в библиотеке и пролинкован галочкой)... :

Основной класс:
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class Main extends Sprite
	{
		private var subclassShow:SubclassShow;
 
		public function Main()
		{
 
			subclassShow = new SubclassShow();
 
		}
	}
}
Вспомогательный класс:
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class SubclassShow extends Sprite
	{
		private var ellipse1:Ellipse1;
 
		public function SubclassShow()
		{
			ellipse1.x = 300;
			ellipse1.y = 300;
			addChild(ellipse1);
		}
 
	}
}
... Должны выводить эллипс1 на экран, но нифига, получается:
Цитата:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at SubclassShow$iinit()
at Main$iinit()
Или я не правильно понимаю тему с цепочкой наследования?

Цитата:
Несколько раз перечитал, так и не понял полностью этого вопроса.
Ну вот судя по ошибке выше, создается впечатление, что он пытается что-то нулевое, во что-то другое, нулевое засунуть; короче парадокс какой-то : ))


Цитата:
Не важно где находится объект, если из другого класса (где есть ссылка на этот объект и stage != null) вызвать stage.addChild(someObject);
Вот здесь например Wolsh не одобряет использование конструкции stage.addChild() : )
Я правда попробовал её применить в этом примере, но ошибка всё та же.


Цитата:
Вывод так же не верный. Ничего сложного изобретать не нужно.
Блин, это хорошо. Вы не могли бы на простом примере (хоть на предыдущем, с эллипсом) показать, как это можно сделать?

Добавлено через 2 минуты
in4core, спасибо за дополнение, это связано с координатами которые в редакторе есть, как я понял.


Последний раз редактировалось Fogflasher; 15.08.2013 в 15:44.
Старый 15.08.2013, 17:22
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 12  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
public function SubclassShow()
{
	ellipse1 = new Ellipse1();
	ellipse1.x = 300;
	ellipse1.y = 300;
	addChild(ellipse1);
}
__________________
Reality.getBounds(this);

Старый 15.08.2013, 17:40
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 13  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Wolsh, о, точно спасибо, торможу уже под вечер.

Исправил, теперь ошибок нет, но stage пустой!

На всякий случай, еще раз код:
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class Main extends Sprite
	{
		private var subclassShow:SubclassShow;
 
		public function Main()
		{
 
			subclassShow = new SubclassShow();
 
 
		}
	}
}
Дополнительный:
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class SubclassShow extends Sprite
	{
		public var ellipse1:Ellipse1;
 
		public function SubclassShow()
		{
			ellipse1 = new Ellipse1();
			ellipse1.x = 50;
			ellipse1.y = 50;
			addChild(ellipse1);
		}
 
	}
}
Может это косяки FP 9.0, как вариант.

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

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
в Main
Код AS3:
addChild(subclassShow)
__________________
местонахождение

Старый 15.08.2013, 17:47
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 15  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
СлаваRa, так-то оно работает конешно, но задача ведь стоит: поместить что-то на stage не используя addChild() в документ-классе.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
поместить что-то на stage не используя addChild() в документ-классе.
1) Не используя addChild не возможно ничего поместить в дисплей лист.
2) Не надо путать stage и просто любой другой контейнер
на стейдж что-то можно поместить только так:
Код AS3:
stage.addChild(something);
И никак иначе. А конструкция addChild(somthing); равнозначна конструкции this.addChild(somthing);
То есть помещает объект не на сцену, а в другой контейнер, из которого был вызван метод addChild
Wolsh не просто так не одобряет помещение чего-либо, кроме документ класса, на сцену. Это на самом деле плохой тон, и часто приводит к полнейшей каше в проекте. Да, объекты могут быть добавлены напрямую на сцену, технически, но с точки зрения архитектуры так делать не рекомендуется.

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

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

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

Регистрация: Mar 2013
Сообщений: 290
Цитата:
1) Не используя addChild не возможно ничего поместить в дисплей лист.
Я же не говорю о запрете оператора addChild(), имелось ввиду использование его НЕ в Документ Классе, для помещения чего-либо на экран.

Кстати, можно ли сказать что Display List всегда пополняется только addChild'ом, нацеленным на stage, и никак иначе?
То есть чтобы что-то отобразилось на экране, нельзя обойти этот принцип.

Цитата:
2) Не надо путать stage и просто любой другой контейнер
на стейдж что-то можно поместить только так:
Код AS3:
stage.addChild(something);
И никак иначе.
Насчет добавления в контейнер я понял, да...

Хотелось бы задать еще несколько вопросов

1. Если в предыдущем классе SubclassShow, заменить
Код AS3:
addChild(ellipse1)
, на
Код AS3:
stage.addChild(ellipse1);
, то казалось бы всё должно работать, но нет - всё та же ошибка, почему так?

2. Правильно ли я вижу картину того, что когда в SubclassShow я пишу просто
Код AS3:
addChild(ellipse1);
То происходит следующее:
- addChild(ellipse1) равнозначно this.addChild(ellipse1)
- а это означает что-то вроде: "поместить экземпляр ellipse1 в контейнер экземпляра класса SubclassShow
- помещение происходит успешно, но так как экземпляр SubclassShow не добавлен в Display List, мы видим пустой экран.

3. Не понимаю, с одной стороны, из этих камментов получается, что для отображения на экране, мы должны всегда помещать в Display List экземпляры неосновных классов только с Документ Класса, а с другой:

Цитата:
Вывод так же не верный. Ничего сложного изобретать не нужно.
То есть сделать это просто, правда непонятно (для меня) как, но это не рекомендуется по причине дурного тона.

Цитата:
Я думаю, ТС имеет в виду самодобавление объекта прямо из его конструктора.
Не понимаю этой фразы. И кто такой TC тоже не в курсе.
Вообще, мне этот вопрос интересен, не потому что хочется побаловаться, и подобавлять что-то из неосновного класса... а потому что есть желание создать управляющий класс, который был бы отличен от основного и ему передавать объекты для добавления их экран...

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

Теги
movieclip , размещение , точные координаты
Опции темы
Опции просмотра

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

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


 


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


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