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

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

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

Регистрация: Apr 2014
Сообщений: 215
По умолчанию ошибка ArgumentError: Error #2025

накидал простенький пример, два квадрата на сцене фла, один типа герой - pers, другой скажем стена с именем - krasniKvadrat, вопрос,почему выходит такая ошибка и как можно исправить - ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.
Код AS3:
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.*;
 
	public class PrimerHero extends MovieClip
	{
       private var left:Boolean;
		public function PrimerHero() 
		{
			stage.addEventListener(Event.ENTER_FRAME,ef)
			stage.addEventListener(KeyboardEvent.KEY_DOWN,kd)
			stage.addEventListener(KeyboardEvent.KEY_UP,ku)
		}
	private function ef(e:Event):void
	{
		if(pers.hitTestObject(krasniKvadrat))
		   {
			   removeChild(krasniKvadrat);
		   }
		if(left)
		{
			pers.x += 6;
		}
	}
	private function kd(e:KeyboardEvent):void
	{
		if(e.keyCode == Keyboard.RIGHT)
		{
			left = true;
		}
	}
	private function ku(e:KeyboardEvent):void
	{
		left = false;
	}
  }
}

Старый 30.04.2014, 01:29
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Для начала нужно понять, у кого в дисплей листе вообще живет krasniKvadrat и удалить корректно.

А можно и не узнавать и набыдлокодить:
Код AS3:
if (krasniKvadrat.parent) {
    krasniKvadrat.parent.removeChild(krasniKvadrat);
}
Но я вам этого не говорил. Нет-нет.
__________________
тут я

Старый 30.04.2014, 02:04
delphic вне форума Посмотреть профиль Отправить личное сообщение для delphic Найти все сообщения от delphic
  № 3  
Ответить с цитированием
delphic

Регистрация: Apr 2014
Сообщений: 215
Цитата:
Сообщение от КорДум Посмотреть сообщение
Для начала нужно понять, у кого в дисплей листе вообще живет krasniKvadrat и удалить корректно.

А можно и не узнавать и набыдлокодить:
Код AS3:
if (krasniKvadrat.parent) {
    krasniKvadrat.parent.removeChild(krasniKvadrat);
}
Но я вам этого не говорил. Нет-нет.
а как можно узнать? Если например без быдлокодерства


Последний раз редактировалось delphic; 30.04.2014 в 02:42.
Старый 30.04.2014, 04:02
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 4  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Цитата:
а как можно узнать? Если например без быдлокодерства
Код AS3:
trace(krasniKvadrat.parent);
Узнаем имя родителя ну и дальше пляшем от него ХД

Старый 30.04.2014, 11:07
delphic вне форума Посмотреть профиль Отправить личное сообщение для delphic Найти все сообщения от delphic
  № 5  
Ответить с цитированием
delphic

Регистрация: Apr 2014
Сообщений: 215
Цитата:
Сообщение от Bletraut Посмотреть сообщение
Код AS3:
trace(krasniKvadrat.parent);
Узнаем имя родителя ну и дальше пляшем от него ХД
ну это я делал - [object PrimerHero]
иииии что мне это дает

Добавлено через 1 час 18 минут
и еще, вот подробней.смысл такой что берем детей что на сцене и смотрим на сталкивание.
room это имя мувика в котором лежат дети.
Код AS3:
platformType =="wall"
это есть у меня класс, беру мувик со стеной, к нему прикручевую класс в котором есть строка -
Код AS3:
platformType = "wall";
Код AS3:
					if(platform[i].platformType =="wall")
					{   
					  	room.removeChild(platform[i]);
						platform.splice(i,1);
					}
ну и как бы при столкновении героя со стеной,изображение исчезает, но вот такая ошибка выходит - Параметр hitTestObject не должен быть равен нулю. хотя если трэйсом проверить
Код AS3:
platform[i]
, выдает что есть объект в момент столкновения
можно конечна еще одно изображение сделать,прикрутить его к классу,сделать это изображение невидимым и положить вне сцены, тогда ошибки не будет)))) но все равно че за прикол такой


Последний раз редактировалось delphic; 30.04.2014 в 11:25.
Старый 30.04.2014, 12:04
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от КорДум Посмотреть сообщение
Для начала нужно понять, у кого в дисплей листе вообще живет krasniKvadrat и удалить корректно.

А можно и не узнавать и набыдлокодить:
Код AS3:
if (krasniKvadrat.parent) {
    krasniKvadrat.parent.removeChild(krasniKvadrat);
}
Но я вам этого не говорил. Нет-нет.
Сань, да какой это быдлокод. Вполне нормальный подход для ас3. То, что у объекта вообще есть ссылка на родителя уже говорит о том, что ее можно использовать. Да и корявая работа метода contains() сама по себе вынуждает это делать

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

Регистрация: Jun 2013
Сообщений: 133
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Да и корявая работа метода contains() сама по себе вынуждает это делать
Извиняюсь за оффтоп, но в чем корявость этого метода? Если имеется ввиду что он проверяет и нижестоящие уровни, то это вроде не корявая работа, а заложенный функционал описанный в документации. Или есть ещё подводные камни?

Старый 30.04.2014, 13:25
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Rivexe - поддерживаю вопрос. Никогда не было проблем с контейнс, всегда юзаю.
__________________
Марк Tween

Старый 30.04.2014, 13:50
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Ну contains проверяет всю иерархию вложенностей дисплей листа до самого конца от того узла, где был вызван. Я не знаю, где вообще может понадобится узнавать, что где-то в пятом колене дисплей листа есть этот ДО, посему могли бы сделать метод упрощенным, завязанным на parent или хотя бы сделали бы вторым параметром флаг recursive, по умолчанию в false.

Под быдлокодерством я подразумевал то, что почему-то вдруг мы не знаем, кто содержит объект и обращаемся к его безликому по сути паренту. Это свидетельствует о том, что работа программы выходит из-под контроля, что чревато проблемами.

Добавлено через 8 минут
2ТС
Возьмите на вооружение дебаггер и смотрите построчно, что там где нулл. Очень тяжело что-то сказать по текущей информации. И ставьте проверки на существование parent.
__________________
тут я

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от Rivexe Посмотреть сообщение
Извиняюсь за оффтоп, но в чем корявость этого метода? Если имеется ввиду что он проверяет и нижестоящие уровни, то это вроде не корявая работа, а заложенный функционал описанный в документации. Или есть ещё подводные камни?
Именно это и есть корявая работа. Зачем нужна такая функция вообще? Где она реально может понадобится?

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

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

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


 


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


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