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

Регистрация: Mar 2006
Адрес: Russia, Kazan
Сообщений: 31
По умолчанию Динамические имена переменных

Стлокнулся с такой проблемой:
В XML:
Код:
<objects>
	<region map="1" number="20">
		<bank type="1" label="Бабруйск">
			<desc>Информация 1</desc>
		</bank>
	</region>
	<region map="1" number="21">
		<bank type="1" label="Бабруйск1">
			<desc>Информация 2</desc>
		</bank>
	</region>
	<region map="1" number="22">
		<bank type="1" label="Бабруйск3">
			<desc>Информация 3</desc>
		</bank>
	</region>		
</objects>
Во флэше есть карта России (каждый регион - отдельный мувик с именем 1_mc, 2_mc, .... N_mc), также во флэше присутствует мувик flag_mc (флажок, с помощью которого нужно помечать нужные регионы).
Суть такова: флэш берет из xml данные регионов, размещает нужные флажки над мувиками-регионами (1_mc и т.п.), при нажатии на регион с флажком, выводится информация в текстовое поле out2_txt.
Проблема заключается в слюдующем, все флажки расставились как надо, нужные регионы подсвечены, но при нажатии на любой подсвеченый регион всегда показывается информация последнего (<desc>Информация 3</desc>) региона.
Вот код в AS:
Код:
var data_xml:XML = new XML();
data_xml.load("data.xml");
data_xml.ignoreWhite = true;
//
var region_map:Array = new Array();
var region_number:Array = new Array();
var bank_type:Array = new Array();
var bank_label:Array = new Array();
var description:Array = new Array(null);
//
echo = function (msg) {
	out2_txt.text += msg;
};
var j:Number = new Number();
var i:Number = new Number();
data_xml.onLoad = function(success) {
	if (success) {
		for (i = 0; i < this.firstChild.childNodes.length; i++) {
			out_txt.text += "Статус XML: " + data_xml.status + newline;
			region_map.push(data_xml.firstChild.childNodes[i].attributes.map);
			region_number.push(data_xml.firstChild.childNodes[i].attributes.number);
			bank_type.push(data_xml.firstChild.childNodes[i].childNodes[0].attributes.type);
			bank_label.push(data_xml.firstChild.childNodes[i].childNodes[0].attributes.label);
			description.push(data_xml.firstChild.childNodes[i].childNodes[0].childNodes[0].childNodes[0].nodeValue);
			_root[region_number[i] + "_mc"]._alpha = 100;
			//trace(i);
			//trace(description[i]);
			//out2_txt.text += description[i]+newline
			_root[region_number[i] + "_mc"].onRelease = function() {
					out2_txt.text += description[i] + newline;
					//trace(j);
				};
			flag_mc.duplicateMovieClip("flag" + i + "_mc", i);
			_root["flag" + i + "_mc"].city_txt.html = true;
			_root["flag" + i + "_mc"].city_txt.htmlText = bank_label[i];
			_root["flag" + i + "_mc"]._x = _root[region_number[i] + "_mc"]._x;
			_root["flag" + i + "_mc"]._y = _root[region_number[i] + "_mc"]._y;
		}
	} else {
		out_txt.text += "Произошла ошибка!";
	}
};
//
Нид хелп