Просмотр полной версии : Необходимо из xml управлять swf роликом!
Есть Flash Accordeon menu + XML, задача сделать так, чтобы ссылки в меню вели не на внешний источник, а управляли страницами внутри flash. Помогите с примерами пожалуйста.
страницами внутри flash
Внутри флеша нет страниц.
В меню аккордеона можно прописать приаттачивание мувиков с конентом из библиотеки.
Пример на метод attachMovie см. в хелпе.
Перед приаттачиванием не забывать удалять текущий.
Также можно организовать загрузку внешних SWF-ок с помощью MovieClipLoader (пример работы класса также в хелпе).
Может примерчик покажете?
Пример на что? На аттачмент?
Открываете хелп и смотрите синтаксис attachMovie и примеры там есть.
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/2/help.html?content=00001278.html#368157
Если непонятно, скачайте переведенный хелп (http://www.flasher.ru/forum/showthread.php?t=93300).
Вообще можно реализовать и банальным переходом по кадрам, а которых может быть расположен разный контент.
Например, пропишите вместо вызова открытия окон (подозреваю, что там getURL используется), метод
_root.gotoAndStop(номер кадра);
Если работаете в Adobe Flash, проследите, чтобы слой с меню-аккордеоном распространялся на все кадры для доступности.
Секунду, у меня в XML надо писать ссылки, чтобы переходить по кадрам, вот такой вариант как?
А XML код тут такой:
<menu>
<item label="Банкетные залы" >
<subitem label="кухня" />
<subitem label="вместительность" />
<subitem label="украшение зала" />
<subitem label="кейтеринг" />
</item>
</menu>
Тоесть нужно так:
<item label="Банкетные залы" frame="5" />
а во flash проекте так:
menu_mc.onItemClick= function(node:XMLNode, level:Number){
my_movie_clip.gotoAndStop(Number(node.attributes.frame));
}
Правильно?
Я бы на вашем месте подготовил несколько статических swf-ок с контентом, и прописал бы в XML их имена (ссылки). Поскольку нет смысла использовать XML, если вы хотите сделать переходы по кадрам.
XML-конфиг хорош именно для случаев, когда надо расширять или менять содержание.
Затем в основной флешке переписал бы парсер XML для получения этих ссылок и из меню грузил бы их с помощью MovieClipLoader.
Либо вообще обойтись без конфига, прописав все намертво, и организовава переходы по кадрам - для чего нужен конфиг, если ничего меняться не будет? Только усложнится использование флешки.
Если на данном этапе для вас это все сложно - переписать разбор XML во флешке для получения дополнительной инфы с ссылками, организовать по ним загрузку с помощью MovieClipLoader, то проще и быстрее обратиться было бы в раздел "Вакансии".
Так перечитал тут море литературы сегодня, но снова вопрос. Таким вот методом я загружаю данные из XML:
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 выгружался, а новый (что укажу) загружался?
Просто загружайте новый, ничего не меняя.
Тогда _root.leftmenu.menu_mc.data затрется новым значением после загрузки нового XML, то есть когда произойдет событие onLoad.
так а что писать то в том кадре, где должно произойти событие onLoad?
пишу так:
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");
но тогда оно накладывается на предыдущее!
Так вы сами же это попросили:
Как сделать так, чтобы на скажем десятом кадре этот XML выгружался, а новый (что укажу) загружался?
Подождите, где просил чтоб он накладывался? Он загружается, но не выгружая старый!
Так. Что вы подразумеваете под словом "выгружая", "выгружался"?
XML-файл нельзя "выгрузить". Его можно только загрузить, разобрать внутри onLoad, получив данные из его узлов и атрибутов, и начинать как-то дальше использовать эти данные.
Добавлено через 1 минуту
Создайте второй экземпляр и второй набор данных:
var xob2:XML = new XML();
xob2.ignoreWhite = true;
xob2.onLoad = function(s) {
if (!s) {
trace("Error loading xml file !");
return;
}
_root.leftmenu.menu_mc.data2 = this.firstChild;
};
xob2.load("data_02.xml");
хорошо, как я заметил, что он не то чтобы накладывается, а он дополняется вторым xml файлом. Как же сделать так чтобы он заменялся именно?
Добавлено через 2 часа 40 минут
Итак задачу не решил пока!
Подробнее опишу вопрос:
вот сайт - asiandiamonds.ru - на нем слева есть меню, оно берет данные из XML
Задача: при выборе определенного региона, изменить ссылки внутри меню СЛЕВА
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.