Показать сообщение отдельно
Старый 31.10.2013, 04:17
LIGHTHILL вне форума Посмотреть профиль Отправить личное сообщение для LIGHTHILL Найти все сообщения от LIGHTHILL
  № 1  
Ответить с цитированием
LIGHTHILL

Регистрация: Oct 2013
Сообщений: 5
По умолчанию Проблема с Event

Пытаюсь сделать анимацию клика. Создал сам MovieClip (расширяющийся кружочек из точки клика).
Сначала добавлял один экземпляр и в случае клика в другом месте, не закончившаяся анимация исчезала и воспроизводилась заново в новом месте. Всё работало. Решил сделать, что бы при каждом новом клике создавался новый экземпляр не мешая окончиться предыдущему. Но столкнулся с проблемой, в случае с одним экземпляром, переменная которого объявлялась ещё в самом классе, я без проблем обращался к номеру кадра этого экземпляра, и когда он оканчивался, я удалял его. Сейчас каждый новый экземпляр создаётся в функции ивента клика мышкой по сцене. И я не пойму как правильно написать Слушатель ON_ENTER_FRAME для каждого экземпляра. Всё время ошибки, и currentFrame всегда 1.
Вот то, что сделано на текущий момент (не работает):
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends MovieClip 
	{
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			stage.addEventListener(MouseEvent.CLICK, onClick);
		}
 
		private function onClick(e:MouseEvent): void
		{
			var circle:CircleAnimation = new CircleAnimation();
			stage.addChild(circle);
			circle.x = mouseX;
			circle.y = mouseY;
			circle.addEventListener(Event.ENTER_FRAME, onEnter);
			circle.addEventListener(Event.REMOVED_FROM_STAGE, onRemoved);
		}
 
		private function onEnter(e:Event): void
		{
			if (this.currentFrame == this.totalFrames)
			{
				stage.removeChild(this);
			}
		}
 
		private function onRemoved(e:Event): void
		{
			this.removeEventListener(Event.ENTER_FRAME, onEnter);
			this.removeEventListener(Event.REMOVED_FROM_STAGE, onRemoved);
		}
 
	}
 
}