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

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

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

Регистрация: Feb 2011
Сообщений: 10
По умолчанию удаление спрайта по клику на нем

всем доброго времени суток.
есть такая задача: по клику на стейдже добавляется на стейдж спрайт с кружочком, по клику на спрайте, спрайт должен удалиться(или просто visible=false).
добывляю спрайты я так:
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
 
	/**
	 * ...
	 * @author me
	 */
	public class Main extends Sprite 
	{
		public var sprites:Array=new Array();
		public var i:int = 0;
		public var X:Number;
		public var Y:Number;
 
		public function stageClick(e: MouseEvent):void
		{
			trace(e);
			X = mouseX;
			Y = mouseY;
			sprites[i] = new Sprite();
			sprites[i].graphics.beginFill(123, 1);
			sprites[i].graphics.drawCircle(mouseX, mouseY, 10);
			sprites[i].graphics.endFill();
			sprites[i].name = "i";
			stage.addChild(sprites[i]);
			i++;
			trace(i);
			trace(sprites);
		}
 
		public function keyDown(k:KeyboardEvent):void
		{
 
		}
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
			stage.addEventListener(MouseEvent.CLICK, stageClick);
			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
		}
 
	}
 
}
и вот собственно столкнулся с проблемой - как удалять? пробовал для каждого спрайта addEventListener(MouseEvent.CLICK, spriteClick), но так и не додумался, как его можно удалить, да к тому же появилась еще одна проблема - даже если клик был по спрайту, все равно срабатывает stageClick. Может кто посоветовать, как удалять спрайты по клику?

Старый 23.02.2011, 21:09
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
addEventListener(MouseEvent.CLICK, spriteClick). В нём проверяете event.target is Sprite и делаете (event.target as Sprite).parent.removeChild(event.target as Sprite). Не нужен массив sprites и итератор i.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Feb 2011
Сообщений: 10
спасибо, работает, спрайты теперь удаляются, но осталась вторая проблема - stageClick все равно срабатывает, и рядом с удалившимся спрайтом рисуется новый

Старый 24.02.2011, 14:13
colobokXXL вне форума Посмотреть профиль Отправить личное сообщение для colobokXXL Найти все сообщения от colobokXXL
  № 4  
Ответить с цитированием
colobokXXL

Регистрация: Nov 2006
Сообщений: 21
то, что быстро в голову приходит, там где делали обработку события "Щелчок на Спрайте", добавьте строчку остановки дальнейшей обработки события:
Код AS3:
event.stopImmediatePropagation();
Протестировал у себя, работает так, как вы поставили в задаче.

Старый 24.02.2011, 15:33
vineda вне форума Посмотреть профиль Отправить личное сообщение для vineda Найти все сообщения от vineda
  № 5  
Ответить с цитированием
vineda

Регистрация: Feb 2011
Сообщений: 10
спасибо, работает

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

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

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


 


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


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