Форум 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)
-   -   XML Динамическое меню - переменная (http://www.flasher.ru/forum/showthread.php?t=122906)

zveryuka 20.03.2009 21:30

XML Динамическое меню - переменная
 
Вложений: 1
Столкнулся с небольшой загвоздкой в коде.....


-создаю меню из n количества кнопок. Подгружаю Какой-либо Мувиклип (пример fg).

-из XML файла загружаю Атрибут "GTN" - он должен отвечать за номер фрейма в определенном Мувиклипе(пример fg)

У меня не выходит скомпоновать данные получаемые из ХМЛ файла - так чтоб при нажатии на Кнопку код вел меня в Мувиклип на "GTN" фрейм.
:(

-в XML файле написан такой код


Код:

<menu>
<item name="Item 1" GTN="57" NM = "1" color="0x006699" />
<item name="Item 2" GTN="66" NM = "1" color="0x006699" />
<item name="Item 3" GTN="54" NM = "1" color="0x006699" />
<item name="Item 4" GTN="45" NM = "1" color="0x006699" />
<item name="Item 5" GTN="44" NM = "1" color="0x006699" />
<item name="Item 6" GTN="36" NM = "2" color="0x006699" />
<item name="Item 7" GTN="72" NM = "1" color="0x006699" />
<item name="Item 8" GTN="75" NM = "1" color="0x006699" />
<item name="Item 9" GTN="80" NM = "1" color="0x006699" />
</menu>

Код AS1/AS2:

// Создаём обьект XML
menu_xml = new XML();
// Игнорируем все ненужные пробелы и переносы строк
menu_xml.ignoreWhite = true;
// Отслеживаем полную загрузку xml
menu_xml.onLoad = function(ok) {
        if (ok) {
                // Если xml загрузился запускаем функцию построения меню
                F_createMenu();
        }
};
// Загружаем menu.xml
menu_xml.load("menu.xml");
// Делаем функцию для создания меню
F_createMenu = function () {
        // Заводим переменную для хранения количества элементов массива (длинны массива)
        var len = menu_xml.childNodes[0].childNodes.length;
        // В цикле перебираем массив
        for (var i = 0; i<len; i++) {
                // Для каждой кнопки создаём мувик
                _root.createEmptyMovieClip("btn"+i, i);
                // Для краткости создадим переменную хранящюю название кнопки
                var b = _root["btn"+i];
                // Аттачим из библиотеки задний фон для кнопки
                b.attachMovie("back", "back", 1);
                // Создаём текстовое поле для отображения названия кнопки
                b.createTextField("tf", 2, 0, -2, 200, 15);
                btxt = new TextFormat();
                btxt.size = 10;
                btxt.color = 0xFFFFFF;
 
                // Применяем к тексту нужные параметры
                with (b.tf) {
                        selectable = false;
                        // Вытаскиваем из массива нужное название кнопки
                        text = menu_xml.childNodes[0].childNodes[i].attributes.name;
                        setTextFormat(btxt);
                }
                // Устанавливаем кнопки по вертикали друг за другом с промежутком в один пиксель
                b._y = (b._height+2)*i;
                // Задаём для каждой кнопки ссылку для перехода по ней при нажатии
 
 
                b.GTN = parseInt(menu_xml.childNodes[0].childNodes[i].attributes.GTN);
                b.NM = parseInt(menu_xml.childNodes[0].childNodes[i].attributes.NM);
 
                // Выкрашиваем кнопку в заданный цвет
                var my_color = new Color(b.back);
                my_color.setRGB(menu_xml.childNodes[0].childNodes[i].attributes.color);
                // Вешаем обработчик событий нажатия на кнопку
                b.onPress = function() {
 
                        // При нажатии переходим по ссылке
                        trace(this.GTN);
                        trace(this.NM);
 
                        _root.goto();
                        //getURL(this.link, "_self");
                };
        }
};
/////////////////////////////////////////////////////
 
 
 
attachMovie("fg","fg",20,{_x:200,_y:0})
 
 
function goto(){
 
        fg.gotoAndStop(GTN);
        }


Fatality 20.03.2009 22:45

Замените 58 строку, на
Код AS1/AS2:

goto(this);

и 72, на
Код AS1/AS2:

fg.gotoAndStop(mc.GTN);

Добавлено через 2 минуты
Ах да, еще 70, на
Код AS1/AS2:

function goto(mc){


zveryuka 23.03.2009 12:48

Спс...

Добавлено через 6 часов 13 минут
Не хотят Эти кнопки удалятся....уже много чего перепробывал....циклом не хотят .... поштучно на ура удаляются....


нехотят они так удалятся

Код AS1/AS2:

removeMovieClip(_root["btn"+i]);

Говорили что нечетный лвл не удаляется.....


делал такое....
Код AS1/AS2:

_root["btn"+i].swapDepths(this.getNextHighestDepth())
_root["btn"+i].removeMovieClip()

тож никакой реакции.... может кто-то подсказать в чем ошибка.?


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

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