Форум 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=126044)

Юрис 08.06.2009 20:25

Переменная перезаписывается в цикле
 
Первый опыт работы с XML, посему не пинайте.
Проблема вот в чем, загружаем ХМЛ, разбираем по запчастям в массив. Затем строится своеобразное меню, так вот не могу догнать как же назначить пунктам меню ссылки из массива. Пытаюсь записать ее в переменную при прохождении цикла, а она перезаписывается. В общем проще показать код))) Вот он

Код AS1/AS2:

 
var myXML:XML = new XML();   
 myXML.ignoreWhite = true;   
 myXML.load("test.xml");
 myXML.onLoad = function(success) {
if (success) {
 createArray();
} else {
result_text.text = "Данные небыли загружены";
}
};
 
 
 
 var list:Array = new Array();
 
 function createArray() {   
 for (n=0; n<myXML.firstChild.childNodes.length; n++) {
    var image = myXML.firstChild.childNodes[n].firstChild.firstChild.nodeValue;   
    var name = myXML.firstChild.childNodes[n].firstChild.nextSibling.firstChild.nodeValue;   
        list[n]=[[image],[name]];
 
        }
 
        createMenuList();
 
 }
 
 function createMenuList(){
        var spacing:Number = 30;
        for (var i=0;i<list.length;++i){
 
                          var picName:String = list[i][0]; //вот тут определяется искомая переменная.
                var name1:String = "name_mc"+i+"_mc";
                var y:Number = i*spacing;
                list_mc.attachMovie("name_mc",name1,i);
                list_mc[name1].temp = picName;
                list_mc[name1]._y=y;
 
              //А вот тут вот начинается самая засада. когда происходит передача переменной в функцию, она почемуто во всех кнопках оказывается одинаковая.               
                list_mc[name1].button_bt.onPress = function() {
                        showPicture(picName);
                        }
 
        }
 
 }
 
 
 function showPicture (href){
        test_txt.text = href; //Соответственно здесь и выводится результат.
 }

Подозреваю что неверно работаю с переменной в цикле, но как правильно ума не приложу. Заранее спасибо.

stuff 08.06.2009 21:43

определять переменные надо до цикла
а в цикле - использовать
и ещё
Код AS1/AS2:

list_mc.createEmptyMovieClip(name1, this.getNextHighestDepth());

перед AttachMovie

Юрис 09.06.2009 00:22

хех... не помогает. Все также перезаписывает...

dimarik 09.06.2009 01:38

Код AS1/AS2:

showPicture(list_mc[name1].temp);

А Вы любитель загадок =)

for (n=0; n<myXML.firstChild.childNodes.length; n++)
...
for (var i=0;i<list.length; ++i)

Юрис 09.06.2009 10:12

А что тут не так? ))) сначала делаю массив из ХМЛ, потом разбираю этот массив...

Код AS1/AS2:

showPicture(list_mc[name1].temp);

Результат тот же. Уже всю голову сломал.

dimarik 09.06.2009 11:40

list[n]=[[image],[name]];
list[] - массив, элементами которого являются массивы [], в которых по два элемента, представляющих из себя массивы, в которых лежат по одному элементу image и name соостветственно.
Вы ничего не перемудрили?


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

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