Форум 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 управлять swf роликом! (http://www.flasher.ru/forum/showthread.php?t=174027)

Weather 16.01.2012 16:16

Необходимо из xml управлять swf роликом!
 
Есть Flash Accordeon menu + XML, задача сделать так, чтобы ссылки в меню вели не на внешний источник, а управляли страницами внутри flash. Помогите с примерами пожалуйста.

mooncar 16.01.2012 16:37

Цитата:

Сообщение от Weather (Сообщение 1057244)
страницами внутри flash

Внутри флеша нет страниц.
В меню аккордеона можно прописать приаттачивание мувиков с конентом из библиотеки.
Пример на метод attachMovie см. в хелпе.
Перед приаттачиванием не забывать удалять текущий.

Также можно организовать загрузку внешних SWF-ок с помощью MovieClipLoader (пример работы класса также в хелпе).

Weather 16.01.2012 16:57

Может примерчик покажете?

mooncar 16.01.2012 17:11

Пример на что? На аттачмент?
Открываете хелп и смотрите синтаксис attachMovie и примеры там есть.
http://help.adobe.com/en_US/FlashPla...78.html#368157

Если непонятно, скачайте переведенный хелп.

Вообще можно реализовать и банальным переходом по кадрам, а которых может быть расположен разный контент.
Например, пропишите вместо вызова открытия окон (подозреваю, что там getURL используется), метод
Код AS1/AS2:

_root.gotoAndStop(номер кадра);

Если работаете в Adobe Flash, проследите, чтобы слой с меню-аккордеоном распространялся на все кадры для доступности.

Weather 16.01.2012 17:44

Секунду, у меня в XML надо писать ссылки, чтобы переходить по кадрам, вот такой вариант как?
А XML код тут такой:
Код AS1/AS2:

<menu>
        <item label="Банкетные залы" >
            <subitem label="кухня" />
                <subitem label="вместительность" />
                <subitem label="украшение зала" />
                <subitem label="кейтеринг" />
        </item>
</menu>


Тоесть нужно так:

Код AS1/AS2:

<item label="Банкетные залы" frame="5" />
 
а во flash проекте так:
menu_mc.onItemClick= function(node:XMLNode, level:Number){
        my_movie_clip.gotoAndStop(Number(node.attributes.frame));
 }

Правильно?

mooncar 16.01.2012 17:54

Я бы на вашем месте подготовил несколько статических swf-ок с контентом, и прописал бы в XML их имена (ссылки). Поскольку нет смысла использовать XML, если вы хотите сделать переходы по кадрам.
XML-конфиг хорош именно для случаев, когда надо расширять или менять содержание.
Затем в основной флешке переписал бы парсер XML для получения этих ссылок и из меню грузил бы их с помощью MovieClipLoader.

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

Если на данном этапе для вас это все сложно - переписать разбор XML во флешке для получения дополнительной инфы с ссылками, организовать по ним загрузку с помощью MovieClipLoader, то проще и быстрее обратиться было бы в раздел "Вакансии".

Weather 16.01.2012 22:02

Так перечитал тут море литературы сегодня, но снова вопрос. Таким вот методом я загружаю данные из XML:
Код AS1/AS2:

var xob:XML = new XML();
xob.ignoreWhite = true;
xob.onLoad = function(s) {
        if (!s) {
                trace("Error loading xml file !");
                return;
        }
        _root.leftmenu.menu_mc.data = this.firstChild;
};
xob.load("data_01.xml");

где как я понял по прочитанному | xob.load("data_01.xml"); | - означает откуда я загружаю данные.

Теперь вопрос. Как сделать так, чтобы на скажем десятом кадре этот XML выгружался, а новый (что укажу) загружался?

mooncar 16.01.2012 22:06

Просто загружайте новый, ничего не меняя.
Тогда _root.leftmenu.menu_mc.data затрется новым значением после загрузки нового XML, то есть когда произойдет событие onLoad.

Weather 16.01.2012 22:17

так а что писать то в том кадре, где должно произойти событие onLoad?
пишу так:
Код AS1/AS2:

var xob:XML = new XML();
xob.ignoreWhite = true;
xob.onLoad = function(s) {
        if (!s) {
                trace("Error loading xml file !");
                return;
        }
        _root.leftmenu.menu_mc.data = this.firstChild;
};
xob.load("data_02.xml");

но тогда оно накладывается на предыдущее!

mooncar 16.01.2012 22:53

Так вы сами же это попросили:
Цитата:

Сообщение от Weather (Сообщение 1057330)
Как сделать так, чтобы на скажем десятом кадре этот XML выгружался, а новый (что укажу) загружался?



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

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