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

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

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

Регистрация: Sep 2012
Сообщений: 57
По умолчанию Удаление child

Нужно чтобы при повторном клике child удалялся. Пытаюсь записать так: глючит, ругается, выдаёт ошибку.
Код AS3:
pol1.addEventListener(MouseEvent.CLICK, oMClick4);
function oMClick4(e:MouseEvent):void
{
		newv.visible = true;
		var item:Jpg1 = new Jpg1();
		addChild (item);
		item.x = 125;
		item.y = 480;
		item.scaleX=0.246;
		item.scaleY=0.246;
		addEventListener(MouseEvent.CLICK, oMClick5);
 
function oMClick5(e:MouseEvent):void
{
	removeChild(item);
 
}
}

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Обьявление переменной item надо вынести за функцию omClick4. И не пишите в кадрах.

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Переменная item объявлена в области видимости функции oMClick4. В области видимости функции oMClick5 ее нет. Вот компилятор и недоумевает, что же вы такое хотите 'removeChild'.

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

Регистрация: Sep 2012
Сообщений: 57
Я уже пробовала, но это не помогает

Добавлено через 38 секунд
пишет The supplied DisplayObject must be a child of the caller.

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

Регистрация: Aug 2012
Сообщений: 297
Код AS3:
//Определяю пакет:
package src
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
 
	//Определяю класс:
	public class MainClass extends MovieClip
	{
		//Определяю переменную экземпляра с модификатором управления доступом private.
		private var os;
 
		//Определяю метод-конструктор:
		public function MainClass()
		{
			//Определяю событие MouseEvent: нажатие левой кнопки мыши.
			s.addEventListener(MouseEvent.MOUSE_DOWN, md);
		}
		//Определяю метод экземпляра с модификатором управления доступом private.
		private function md(event:MouseEvent):void
		{
			//Инициализирую переменную os (создаю объект).
			os = new objectStage();
 
			//Тут ваши замыслы.
 
			//Добавляю на сцену объект:
			this.addChild(os);
			//Определяю событие MouseEvent: нажатие левой кнопки мыши.
			os.addEventListener(MouseEvent.MOUSE_DOWN, mdo);
		}
		//Определяю метод экземпляра с модификатором управления доступом private:
		private function mdo(event:MouseEvent):void
		{
			//Присваиваю объект локальной переменной:
			var lw = event.target;
			//Если на сцене есть объект, то:
			if(stage.contains(lw))
			{
				//Удаляю его со сцены:
				this.removeChild(lw);
				//Удаляю событие мыши:
				lw.removeEventListener(MouseEvent.MOUSE_DOWN, mdo);
			}
		}
	}
}
К переменной экземпляра os будет присвоен созданный объект (создание объекта), который вы хотите удалить.
Символ MovieClip 's' это объект на который вы нажимаете и создаёте тем самым новый объект.

Старый 09.02.2013, 02:37
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 6  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Цитата:
The supplied DisplayObject must be a child of the caller.
Тогда нужно сначала проверять, добавлен ли объект в display list вообще и его ли это родитель:
Код AS3:
...
if (item.parent && item.parent == this)
    removeChild(item);
...
P.S. На самом деле первая проверка необязательна. Если объект не добавлен в display list, то item.parent == null и уж точно item.parent != this.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
bav, зачем такая проверка? Не проще ли тогда:
Код AS3:
if (contains(item)) {
    removeChild(item);
}

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
contains проверяет и дочерние контейнеры тоже
__________________
low +

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Да, тогда самый действенный и простой способ:
Код AS3:
if (item.parent)  item.parent.removeChild(item);
и пофиг, что кто-то скажет, что не должен ребенок дергать методов родителя.

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

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

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


 


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


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