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

Регистрация: Mar 2010
Сообщений: 18
По умолчанию Разные кнопки (экземпляры) при вызове функции с разными параметрами

Расплывчатое название темы, но вот суть:
при вызове функции в спрайте отрисовываются прямоугольники.
Код AS3:
package {
	import flash.display.Sprite;
	import flash.display.Graphics;
	import flash.events.MouseEvent;
 
	public class drRecMenu_lines extends Sprite {
 
		private var container:Sprite;
		private var itemXpos:uint;
		private var contPositionY:uint;
/*		private var it1:*;
		private var it2:*;
		private var it3:*;
		private var it4:*;
		private var it5:*;*/
 
 
		public function drRecMenu_lines(contPositionY:uint=580) {
			container=new Sprite();
			this.contPositionY=contPositionY;
			container.y=contPositionY;
			drawItem(1,0xFFFF00,1);
			drawItem(2);
			drawItem(3);
			drawItem(4);
			drawItem(5);
			this.addChild(container);
			container.addEventListener(MouseEvent.MOUSE_OVER, runDebug);
			//it3.addEventListener(MouseEvent.MOUSE_OVER, runDebug);
			//it4.addEventListener(MouseEvent.MOUSE_OVER, runDebug);
		}
		private function drawItem(itemCount:uint,fillColor:uint=0x000000, itemAlpha:Number=.8):void {
			if (itemCount<5) {
				itemXpos=(itemCount-1)*180;
				container.graphics.beginFill(fillColor, itemAlpha);
				container.graphics.drawRect(itemXpos,0,180,60);
				container.graphics.endFill();
 
				container.graphics.moveTo(itemXpos,contPositionY);
				container.graphics.lineStyle(1,0xCCCCCC, .2);
				container.graphics.lineTo(itemXpos,contPositionY+60);
			} else {
				itemXpos=(itemCount-1)*180;
				container.graphics.beginFill(fillColor, itemAlpha);
				container.graphics.drawRect(itemXpos,0,1000,60);
				container.graphics.endFill();
			}
		}
		private function runDebug(evt:MouseEvent):void {
			trace("Mouse is over the "+evt.target.name+" item");//Mouse is over the instance1 item
		}
	}
}
Как сделать так, чтобы каждый прямоугольник был как кнопка и реагировал на наведение? У меня не хватате опыта, но мне кажется как раз что это потому что прямоугольники отрисованы в одном спрайте?
Пробовал так:
Код AS3:
package {
	import flash.display.Sprite;
	import flash.display.Graphics;
	import flash.events.MouseEvent;
 
	public class drRecMenu_lines extends Sprite {
 
		private var container:Sprite;
		private var itemXpos:uint;
		private var contPositionY:uint;
		private var it1:*;
		private var it2:*;
		private var it3:*;
		private var it4:*;
		private var it5:*;
 
 
		public function drRecMenu_lines(contPositionY:uint=580) {
			container=new Sprite();
			this.contPositionY=contPositionY;
			container.y=contPositionY;
			it1=drawItem(1,0xFFFF00,1);
			it2=drawItem(2);
			it3=drawItem(3);
			it4=drawItem(4);
			it5=drawItem(5);
			this.addChild(container);
			//container.addEventListener(MouseEvent.MOUSE_OVER, runDebug);
			it3.addEventListener(MouseEvent.MOUSE_OVER, runDebug);
			it4.addEventListener(MouseEvent.MOUSE_OVER, runDebug);
		}
		private function drawItem(itemCount:uint,fillColor:uint=0x000000, itemAlpha:Number=.8):void {
			if (itemCount<5) {
				itemXpos=(itemCount-1)*180;
				container.graphics.beginFill(fillColor, itemAlpha);
				container.graphics.drawRect(itemXpos,0,180,60);
				container.graphics.endFill();
 
				container.graphics.moveTo(itemXpos,contPositionY);
				container.graphics.lineStyle(1,0xCCCCCC, .2);
				container.graphics.lineTo(itemXpos,contPositionY+60);
			} else {
				itemXpos=(itemCount-1)*180;
				container.graphics.beginFill(fillColor, itemAlpha);
				container.graphics.drawRect(itemXpos,0,1000,60);
				container.graphics.endFill();
			}
		}
		private function runDebug(evt:MouseEvent):void {
			trace("Mouse is over the "+evt.target.name+" item");//Mouse is over the instance1 item
		}
	}
}
Выдает ошибку
Цитата:
TypeError: Error #1010: Термин не определен и не имеет свойств.
at drRecMenu_lines()