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

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

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

Регистрация: May 2012
Сообщений: 166
Question Добавление на передний план экзмпляров 1 класса

Приветствую, прошу снова вашей помощи....
Есть куча одинаковых экземпляров 1го класса(без имен) движущихся по сцене, нужно перемещать на передний план (swapChildren) те объекты которые находятся ниже всех остальных по оси Y. При попытке это сделать выдает ошибку.
В EnterFrame пишу:
Код AS3:
for (var q:int=0; q<Enemy.enAll.length; q++)
{
	if(enAll[q].enemyPositionPoint.y>this.enemyPositionPoint.y) //Массив объектов
	{ // ниже конкретного экзепляра
		if(oc==false) // данные значения останавливают процесс swapChildren
		{// и  перезапускают в нужный момент
			swapChildren(this, enAll[q]); // тут ошибка, как исправить?
			oc=true;
		}
	}
	else
	{
		oc=false; 
	}
 
}
Код:
Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.
	at flash.display::DisplayObjectContainer/swapChildren()
	at Enemy/onLine()
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.


Последний раз редактировалось iNils; 04.07.2012 в 14:50.
Старый 03.07.2012, 20:25
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 2  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Код AS3:
swapChildren(this, enAll[q])
полностью аналогично:

Код AS3:
this.swapChildren(this, enAll[q])
т.е. вы родитель пытаете поменять местами с ребенком.
а параметры swapChildren должны быть в одном контейнере, как понимаю
__________________
adobe AS3 manual

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

Регистрация: May 2012
Сообщений: 166
Тогда сразу вопрос возникает, если я буду проводить эту процедуру из главного класса на котором все и находится.. как я могу обратится к экземплярам класса с объектами выше указанным образом? Ко всем обращусь без проблем.. Enemy.enAll[q] (массив статический), а вот к 1 экземпляру который пересекся с остальными как? (Enemy.enemys.y ? если public static var enemys = this; таким образом не выходит)
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.


Последний раз редактировалось Tetraeon; 03.07.2012 в 20:35.
Старый 03.07.2012, 21:24
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Зачем здесь вообще swapChildren? Чем не подходит addChild?
__________________
Reality.getBounds(this);

Старый 03.07.2012, 21:52
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 5  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
подходит наверно(если позиция экземпляров будит находится на том же месте после добавления), только беда с обращением к переменным условия.
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.


Последний раз редактировалось Tetraeon; 04.07.2012 в 00:27.
Старый 04.07.2012, 00:58
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Насколько я понял Ваш код, здесь должно быть обращение к контейнеру, содержащему всех этих врагов:
Код AS3:
this.parent.swapChildren(this, enAll[q]);
// или просто забрасываем врага из массива наверх контейнера
// this.parent.addChild(enAll[q]);
Координаты x и y конечно не изменятся, с чего бы.. Не ищите в программировании мистики.. иногда конечно кажется, что все происходит не так как было задумано)) Но это обычно от того, что вместо чтения справки мы начинаем сами выдумывать правила, которые кажутся нам очевидными. Но на деле ситуаций гораздо, гораздо больше, чем мы можем себе представить, и правила придуманы так, чтобы работать максимально предсказуемо во всех этих ситуациях, даже когда кажется, что вот "здесь и сейчас было бы удобнее", если бы было "вот так")))

Добавлено через 1 минуту
И да.. В будущем никогда так не делайте. Просто запомните, что нельзя. Почему, поймете когда-нибудь попозже.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 04.07.2012 в 01:00.
Старый 04.07.2012, 07:51
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 7  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
Спасибо, все получилось =)
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.

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

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Цитата:
Сообщение от Wolsh Посмотреть сообщение
this.parent
боже упаси от такого кода)
__________________
adobe AS3 manual

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

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


Последний раз редактировалось Wolsh; 04.07.2012 в 14:57.
Старый 04.07.2012, 18:31
Tetraeon вне форума Посмотреть профиль Отправить личное сообщение для Tetraeon Найти все сообщения от Tetraeon
  № 10  
Ответить с цитированием
Tetraeon

Регистрация: May 2012
Сообщений: 166
Все правильно иногда нужно объяснять на том же уровне на котором задан вопрос))
В итоге все свелось к элементарным нескольким строчкам.
Код AS3:
for (var q:int=0; q<enAll.length; q++)
{
	if(enemys.y<enAll[q].y)
	{
		parent.addChild(enAll[q]);
	}
}
Работает только с 1м видом экземпляров родительского класса, что странно по логике т.к. в массиве enAll содержатся все экземпляры подклассов (я трейсил). Думаю со временем разберусь. Спасибо за ваше терпение и за любые подсказки в нужном направлении.
__________________
Выражаю благодарность всем, кто помогают новичкам. Ваша бескорыстная помощь внушает уважение.


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

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

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


 


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


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