Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Динамические имена переменных (http://www.flasher.ru/forum/showthread.php?t=85217)

DarkWark 18.09.2006 14:09

Динамические имена переменных
 
Стлокнулся с такой проблемой:
В 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 += "Произошла ошибка!";
        }
};
//

Нид хелп

Juice_Green 18.09.2006 14:45

попробуйте так:
Код:

_root[region_number[i] + "_mc"].i = i;
_root[region_number[i] + "_mc"].onRelease = function() {
        out2_txt.text += description[this.i] + newline;
};


DarkWark 18.09.2006 15:04

Спасибо, работает :)
Целый день сегодня сижу, никак разобраться не мог))


Часовой пояс GMT +4, время: 14:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.