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

Регистрация: Dec 2009
Сообщений: 125
Записей в блоге: 1
По умолчанию Изменение имени переменной налету

Я начинающий AS-программист. Встретился с проблемой и нуждаюсь в помощи. На форуме уже создавались подобные темы (но без примеров). Создалось ощущение что в Actionscript не предусмотрено такое.
Задача: Сделать в схеме при наведении на объекты появление фотографий (без подгрузки из внешних файлов, а мувиклипом)
Мой вариант решения: Мувиклипы разложить по сцене со свойством alpha=0, изменять это свойство при наведении указателем на соответствующий объект и его "убиранием" оттуда.

Код AS3:
function dvizhenie(Photo1):void {
	Photo1.alpha=1;
	Photo1.addEventListener(Event.ENTER_FRAME, onEnterFrame);
	function onEnterFrame(event:Event):void {
		if (mouseX>=350) {
			Photo1.x=mouseX-Photo1.width-5;
			Photo1.y=mouseY-Photo1.height-5;
		}
		else if (mouseY>=165) {
			Photo1.x=mouseX+5;
			Photo1.y=mouseY-Photo1.height-5;
		} else {
			Photo1.x=mouseX+5;
			Photo1.y=mouseY+5;
		}
	}
}
function is4ez(Photo2):void {
	Photo2.alpha=0;
}
TRK.addEventListener(MouseEvent.MOUSE_OVER,addPhoto);
function addPhoto(event:MouseEvent):void {
	dvizhenie(TRK_Photo);
}
TRK.addEventListener(MouseEvent.MOUSE_OUT,removePhoto);
function removePhoto(event:MouseEvent):void {
	is4ez(TRK_Photo);
}
Проблема: При добавлении новых мувиклипов растет код. ХОтелось бы его сделать универсальным (для использования в других разработках), чтобы имена Instance name заносились программистом в массив и далее в цикле обрабатывалась универсальная функция от переменных, содержащихся в значении элементов массива.
В языке Си (мне говорили) есть какой-то указатель, начинающийся с символа @. В AS 3.0 такое не нашел. Как обойти и сделать другим способом.
Мне нужно в результате иметь

Код:
<мувиклип i-ый>.addEventListener(MouseEvent.MOUSE_OVER,<функция i-ая>);
function <функция i-ая>(event:MouseEvent):void {
	dvizhenie(мувиклип i-ый + Photo);
}