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

Регистрация: Oct 2013
Сообщений: 22
По умолчанию Получение информации в обработчике события

Есть массив объектов(картинка и параметры для неё), т.е. массив картинок с параметрами.
Все они выводятся на экран в цикле каждая картинка имеет персональный спрайт(из этого массива), к которому привязаны какие то события. В обработчики событий target - ссылается на Bitmap картинки, а currentTarget - на тот спрайт на котором расположена картинка.

Всё работает отлично но нужно в обработчике, когда возникает событие, точно знать какой индекс у данного спрайта поймавшего это событие, сейчас я реализовал это через, параметр z (Sprite.z) но не думаю, что это правильно может есть более гибкий способ?

Код AS3:
		[Embed(source="../../../images/11.png")]
		protected static const image11:Class;
		[Embed(source="../../../images/22.png")]
		protected static const image22:Class;
		[Embed(source="../../../images/33.png")]
		protected static const image33:Class;
		[Embed(source="../../../images/44.png")]
		protected static const image44:Class;
		[Embed(source="../../../images/55.png")]
		protected static const image55:Class;
		[Embed(source="../../../images/66.png")]
		protected static const image66:Class;
		[Embed(source="../../../images/77.png")]
		protected static const image77:Class;
		[Embed(source="../../../images/88.png")]
		protected static const image88:Class;
		[Embed(source="../../../images/99.png")]
		protected static const image99:Class;
 
		private var ims:Array = new Array(
			{x:0,y:-2,i:new image11() as Bitmap,s:new Sprite()},	//1
			{x:170,y:0,i:new image22() as Bitmap,s:new Sprite()},	//2
			{x:170,y:110,i:new image33() as Bitmap,s:new Sprite()},	//3
			{x:380,y:20,i:new image44() as Bitmap,s:new Sprite()},	//4
			{x:440,y:65,i:new image55() as Bitmap,s:new Sprite()},	//5
			{x:550,y:0,i:new image66() as Bitmap,s:new Sprite()},	//6
			{x:610,y:30,i:new image77() as Bitmap,s:new Sprite()},	//7
			{x:790,y:0,i:new image88() as Bitmap,s:new Sprite()},	//8
			{x:590,y:162,i:new image99() as Bitmap,s:new Sprite()}	//8
		);
 
 
		public function Images()
		{
			for (var i:Number = 0; i < ims.length; i++) {
				ims[i].s.x = ims[i].x;
				ims[i].s.y = ims[i].y;
				ims[i].s.z = i; //то самое ... при больших значениях z контент может сильно уменьшится
				ims[i].s.addChild(ims[i].i);
				ims[i].s.addEventListener(MouseEvent.MOUSE_OVER, imageOver);
				ims[i].s.addEventListener(MouseEvent.MOUSE_OUT, imageOut);
				addChild(ims[i].s);
			}
		}
 
		private function imageOver(e:Event):void
		{
 
		}
 
		private function imageOut(e:Event):void
		{
 
		}