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

Регистрация: May 2011
Сообщений: 4
Question Помогите с работой с текущими объектами

Не знала, как точно назвать эту проблему, но суть такова: я создаю объект (квадрат) с помощью функции, передавая в неё параметры из другой функции, которая вызывается при клике на т.н. панель инструментов внизу экрана.
Как это всё выглядит: http://img0.liveinternet.ru/images/a...0031_task4.swf
Если происходит нажатие на квадрат, всплывает меню с опциями поворота и перекрашивания.
Так вот вопрос: При выборе пункта "поворот" или "перекрасить" должен перекраситься текущий объект (я чую, что необходимо использовать this), но у меня поворачиваются все квадраты на экране( Как модифицировать код, чтобы поворачивался текущий объект?

Пробовала делать повторение одного и того же куска кода семь раз, но с разными размерами квадрата, однако это решение какое-то совсем не изящное.
Буду благодарна за помощь, т.к. в as3 работаю всего ничего и самой мне так сразу не разобраться.

Кусок кода
Код AS3:
function Cube1Tool(e:MouseEvent):void
{
	CubeTool(1,12.5,acube1);			
}
function Cube2Tool(e:MouseEvent):void
{
	CubeTool(2,25,acube2);			
}
function Cube3Tool(e:MouseEvent):void
{
	CubeTool(3,50,acube3);			
}
function Cube4Tool(e:MouseEvent):void
{
	CubeTool(4,75,acube4);			
}
function Cube5Tool(e:MouseEvent):void
{
	CubeTool(5,100,acube5);			
}
function Cube6Tool(e:MouseEvent):void
{
	CubeTool(6,150,acube6);			
}
function Cube7Tool(e:MouseEvent):void
{
	CubeTool(7,200,acube7);			
}
 
 
function CubeTool(a:int,siz:Number,acube:Object):void
{
	acube.visible=true;
	var rect:Sprite = new Sprite();
	rect.graphics.lineStyle(2,0xffffff);
	rect.graphics.beginFill(0x000000);
	rect.graphics.drawRect(-siz/2,-siz/2,siz,siz);
	rect.graphics.endFill();
	rect.x+=282.5;
	rect.y+=150;
	addChild(rect);
	board.addChild(rect);
	acube.addEventListener(MouseEvent.MOUSE_UP, AcubeTool);
	rect.addEventListener(MouseEvent.MOUSE_DOWN, Popup);
	rect.addEventListener(MouseEvent.MOUSE_DOWN, drag);
	rect.addEventListener(MouseEvent.MOUSE_UP, stopdrag);
 
	function drag(e:MouseEvent):void 
	{
		rect.startDrag();
	}
 
	function stopdrag(e:MouseEvent):void 
	{
		rect.stopDrag();
	}	
 
	function Popup(e:MouseEvent):void
	{
		popupmenu.visible=true;
		popupmenu.rollright.addEventListener(MouseEvent.MOUSE_UP, RollR);
		popupmenu.rollleft.addEventListener(MouseEvent.MOUSE_UP, RollL);
		popupmenu.repaintTool.addEventListener(MouseEvent.MOUSE_UP, RepaintTool);
 
		function RollR(e:MouseEvent):void
		{
			rect.rotation += 15;
			popupmenu.visible=false;
		}
		function RollL(e:MouseEvent):void
		{
			rect.rotation -= 15;
			popupmenu.visible=false;
		}
 
		function RepaintTool(e:MouseEvent):void
		{
			var colorInfo:ColorTransform = rect.transform.colorTransform;
			colorInfo.color = 0x123456;
			rect.transform.colorTransform = colorInfo;
			popupmenu.visible=false;
		}
	}
 
	function AcubeTool(e:MouseEvent):void
	{
		acube.visible=false;
		RemoveObject.remove(rect);
		addChild(rect);
		RemoveObject.remove(rect); 	
	}
}


Последний раз редактировалось udaaff; 06.06.2011 в 02:31.