Показать сообщение отдельно
Старый 16.12.2008, 15:31
icansee вне форума Посмотреть профиль Отправить личное сообщение для icansee Найти все сообщения от icansee
  № 7  
Ответить с цитированием
icansee

Регистрация: Dec 2008
Сообщений: 1
Привет!

Слушайте, ну я совсем новенький. До этого занимался только простой флэш-анимацией, а сейчас решил разобраться с AS.

Вопрос у меня похожий.

На сцене добавлено несколько муви-клипов с разными именами, отличающимися только индексом (hs0, hs1, hs2 и т.д.). На сцене их будет много и они все выполняют одно и то же действие. По этому я создал цикл для одинаковых слушателей.

Так же я загружаю в свою флэшку данные из XML-файла и заношу их в массив. А хочу я, что бы при наведении на определенный объект в сцене в заранее созданном текстовом поле появлялось соответствующая строка из массива.

Ну не создавать же столько функций, сколько объектов в сцене, так ведь? И слушателей не за чем дублировать. Но как это сделать вот это соответствие:

наводя мышкой на определенный объект мы выводим определенную строку из массива?

Код AS3:
var colorXML:XML;
var xmlReq:URLRequest = new URLRequest("colorxml.xml");
var xmlLoader:URLLoader = new URLLoader();
var hash:Dictionary = new Dictionary();
var movieNumber;
 
function xmlLoaded(event:Event):void {
	colorXML = new XML(xmlLoader.data);
	colorXML.ignoreWhitespace = true;
	trace("XML loaded!");
}
 
xmlLoader.load(xmlReq);
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
 
 
for (var i=0; i<3; i++) {
	this["hs" + i].addEventListener(MouseEvent.ROLL_OVER, onBoxOver);
	hash[i] = movieNumber;
 
}
 
function onBoxOver(evt:MouseEvent):void {
	var _text:String;
	var _textArray:Array = new Array;
 
	for (var i=0; i<3; i++) {
		_textArray[i]=colorXML.store[i].name;
	}
 
	if (hash[evt.target] == movieNumber) {
		_text = _textArray[1];// как сделать соответствие выбранного объекта определенному значению массива?
	}
	trace(_text);
}
За ранее огромное спасибо!