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

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

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

Регистрация: Apr 2013
Сообщений: 89
По умолчанию Кнопка удаления объекта

Здравствуйте!

Есть спрайт, который создается в функции fclick, я добавляю в этот спрайт кнпоку закрытия. Но вот как этот спрайт удалить?

Проблема в том, что я не могу удалить объект который я создаю локально.

Пример:

Код AS3:
package  
{
	import flash.display.*;
	import flash.events.MouseEvent;
 
	public class asddsa extends Sprite
	{
 
		public function asddsa()  
		{
 
			var btn:Btn = new Btn();
			btn.addEventListener(MouseEvent.CLICK, fclick);//кнопка которая создает объект, который в дальнейшем нужно будет удалять, при нажатии на  кнопку btnKick
		}
		public function fclick(e:MouseEvent):void
		{
			var obj:Obj = new Obj();//объект который нужно удалять
			btnKick:BtnKick = new BtnKick();//кнопка которая должна удалять
addChild(obj);
		}
 
	}
 
}
Ситуация не простая, т.к. объект глобально создавать нельзя, но и обратиться к этому объекту, отлавливая в событии нажатия по кнопке btnKick не предоставляется возможным.

Что делать?


Последний раз редактировалось vlbuto; 15.02.2015 в 19:49.
Старый 15.02.2015, 13:01
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
объект глобально создавать нельзя
Что Вы имеете в виду?

Не делайте локальную переменную, сделайте ее на уровне экземпляра класса. Не вижу проблем.
__________________
тут я

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
На лицо явное непонимание того, что значит "глобально". Переменная созданная на уровне экземпляра класса - не является глобальной.
Так что вариант предложенный КорДум'ом - самый верный и простой.
Цитата:
//объект который нужно удалять
Откуда удалять? Он никуда не добавляется. Его сборщик мусора сам удалит

Старый 15.02.2015, 19:47
vlbuto вне форума Посмотреть профиль Отправить личное сообщение для vlbuto Найти все сообщения от vlbuto
  № 4  
Ответить с цитированием
vlbuto

Регистрация: Apr 2013
Сообщений: 89
Да забыл добавить addChild'ом.

Глобально, это значит, что я хочу создавать объект именно при нажатии а не на уровне класса.

Добавлено через 3 минуты
Цитата:
Сообщение от КорДум Посмотреть сообщение
Что Вы имеете в виду?

Не делайте локальную переменную, сделайте ее на уровне экземпляра класса. Не вижу проблем.
Т.е. если я создам на уровне класса, я могу сразу добавить объект, а по нажатии на кнопку удалить, removeChild'ом добавленный экземпляр уйдет?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Да, возможно, вам нужно удалить дисплейобджект, к которому был добавлен слушатель?
Код AS3:
function fclick(e:MouseEvent):void
{
  removeChild(e.currentTarget as DisplayObject);
}
__________________
There is no thing in this world that is not simple.

Старый 15.02.2015, 23:32
vlbuto вне форума Посмотреть профиль Отправить личное сообщение для vlbuto Найти все сообщения от vlbuto
  № 6  
Ответить с цитированием
vlbuto

Регистрация: Apr 2013
Сообщений: 89
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Да, возможно, вам нужно удалить дисплейобджект, к которому был добавлен слушатель?
Код AS3:
function fclick(e:MouseEvent):void
{
  removeChild(e.currentTarget as DisplayObject);
}
Да это понятно. Но это удаление того объекта по которому я нажал.

Есть кнопка1
Есть объект1
Есть кнопка2

Я нажимаю кнопка1, появляется объект1, нажимаю кнопка2, объект1, содержащий кнопка2 удаляется.

Старый 16.02.2015, 00:14
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 7  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Код AS3:
 
package  
{
	import flash.display.*;
	import flash.events.MouseEvent;
 
	public class asddsa extends Sprite
	{
 
		public function asddsa()  
		{
 
			var btn:Btn = new Btn();
			btn.addEventListener(MouseEvent.CLICK, fclick);//кнопка которая создает объект, который в          дальнейшем нужно будет удалять, при нажатии на  кнопку btnKick
		}
		public function fclick(e:MouseEvent):void
		{
			var obj:Obj = new Obj();//объект который нужно удалять
			btnKick:BtnKick = new BtnKick();//кнопка которая должна удалять
                        btnKick.addEventLinstener(MouseEvent.CLICK, onRemove);
                        obj.addChild( btnKick );
                        addChild(obj);
 
		}
 
 
 
        private function onRemove(e:MouseEvent):void
       {
          if( e )e.currentTarget.removeEventListener( e.type, arguments.callee );
 
           // создаем ссылку на окно, объект который должен быть удален
          var me:DisplayObjectContainer = ( e.currentTarget as DisplayObject).parent;
         // проверяем находится ли этот объект в каком то контейнере и если да - удаляем из контейнера
         if( me.parent ) me.parent.removeChild( me );
      }
 
}
}
и все равно это изврат


Последний раз редактировалось fish_r; 16.02.2015 в 03:00.
Старый 16.02.2015, 00:16
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 8  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Если вы хотите удалить свойство класса - отписываемся от слушателей, и any = null;
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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