Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.06.2011, 18:41
vivado вне форума Посмотреть профиль Отправить личное сообщение для vivado Найти все сообщения от vivado
  № 1  
Ответить с цитированием
vivado

Регистрация: Aug 2010
Сообщений: 282
Cool XML меню аккордеон

Всем привет,
Подскажите можно ли сделать меню типа аккардион (раскрывающееся) средствами AS 2.0 (без Tween анимации)?
Например гружу из XML Имена пунктов меню + ссылки к ним вот так.

Код AS1/AS2:
menu_xml = new XML(); // Создаём обьект XML
menu_xml.ignoreWhite = true; // Игнорируем все ненужные пробелы
// Отслеживаем загрузку xml
menu_xml.onLoad = function(ok) {	if (ok) { F_createMenu();	} }
 
menu_xml.load("menu.xml"); // Загружаем menu.xml
 
// Функцию для создания меню
F_createMenu = function () {
 
// Заводим переменную для хранения количества элементов массива
var lenMass = menu_xml.childNodes[0].childNodes.length;
 
// В цикле перебираем массив
	for (var i = 0; i<lenMass; i++) {
 
// Для каждой кнопки создаём мувик
		_root.createEmptyMovieClip("btn"+i, i);
 
// Переменная хранящая название кнопки
		var b = _root["btn"+i];
 
// Аттачим из библиотеки задний фон для кнопки
		b.attachMovie("back", "back", 1);
 
// Создаём текстовое поле для отображения названия кнопки
		b.createTextField("tf", 2, 0, 0, 200, 20);
 
// Применяем к тексту нужные параметры
		with (b.tf) {
			selectable = false;
// Вытаскиваем из массива нужное название кнопки
			text = menu_xml.childNodes[0].childNodes[i].attributes.menu_name;
		}
 
// Устанавливаем кнопки по вертикали друг за другом с промежутком в один пиксель
		b._y = (b._height+1)*i;
 
// Задаём для каждой кнопки ссылку для перехода по ней при нажатии
		b.link = menu_xml.childNodes[0].childNodes[i].attributes.link;
 
// Вешаем обработчик событий нажатия на кнопку
		b.onPress = function() {
		getURL(this.link, "_self"); // При нажатии переходим по ссылке
		};
	}
};
XML у меня такого типа:
PHP код:
<item menu_name="Главная" link="http://test.ru" />
<
item menu_name="Галерея" link="http://test.ru/2" />
<
item menu_name="Контакты" link="http://test.ru/3" /> 
Как можно организовать появляющееся подменю для каждого из пунктов меню, я так понимаю нужно особым способом сформировать XML и потом грузить по порядку и главное как сделать
анимацию для раскрывающегося списка подменю с помощью AS 2.0?

Была у меня идея создать отдельные XML для каждого пункта меню и грузить их по порядку но это думаю неправильно?

И пожалуйста не отправляйте меня Гуглить или Читать учебник. Лучше направьте в нужное русло подсказками.

Старый 08.06.2011, 19:03
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Есть стандартный компонент Accordion (кстати, по русски все-таки правильно писать "аккордеон")
Adobe Flash, Ctrl + F7, выбираете Accordion и программно настраивайте в соответствии с вашими данными, полученными из XML.
Что и как, есть в хелпе, статья "Accordion component".
__________________
Идите первым!


Последний раз редактировалось mooncar; 08.06.2011 в 19:07.
Старый 08.06.2011, 20:54
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 3  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
http://wedding-tur.ru/

Меню-книжка с аккордеоном. рассмотрю коммерческие предложения

ХМЛ также содержит следующие настройки.

// speed - скорость раздвигания. Сдивгание - в 2 раза быстрее (сек)
// flipspeed - скорость перелистывания (миллисек)
// X0, Y0 - позиция первой строки осн.меню
// mainSpace - - интервал между строками осн.меню
// spacing - интервал строк субМеню
// delay - задержка перед переходом на ссылку (сек)

При желании сама листалка легко отламывается.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 09.06.2011, 11:12
vivado вне форума Посмотреть профиль Отправить личное сообщение для vivado Найти все сообщения от vivado
  № 4  
Ответить с цитированием
vivado

Регистрация: Aug 2010
Сообщений: 282
dark256 Мне книжка эта не нужна, причем исходников подобных куча бесплатно нагуглить можно. Помоги лучше если можешь по доброте душевной, а это предложение в вакансии )))

Добавлено через 3 минуты
Цитата:
Сообщение от mooncar Посмотреть сообщение
Есть стандартный компонент Accordion (кстати, по русски все-таки правильно писать "аккордеон")
Adobe Flash, Ctrl + F7, выбираете Accordion и программно настраивайте в соответствии с вашими данными, полученными из XML.
Что и как, есть в хелпе, статья "Accordion component".
Спасибо но я хотел, так сказать все компоненты меню сам сделать. Может знаешь как?

Старый 09.06.2011, 11:37
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Не хотите готовые... Наверное тогда у вас это уже будет не "компонент" в строгом смысле, если полученный модуль не будет соответствовать определенным требованиям, предъявляемым к "компонентам", как то - переносимость, наличие пользовательских свойств и методов. Получится просто необходимая вам разработка. Ну это так, терминологическое отступление.

Готового такого у меня нет, нужно просто сесть и написать, используя весь свой опыт.
Единственное, что могу посоветовать, для анимаций можно использовать класс TweenLite от Greensock.
__________________
Идите первым!

Старый 09.06.2011, 11:46
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 6  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Цитата:
Помоги лучше если можешь по доброте душевной
Чем тут помочь-то?
Литературным языком рассказать ВСЕ от начала и до конца?
Это малоконструктивно. Не говоря уже о том, что толку будет мало.

1. Хмл - сделайте со вложенными узлами 2-го уровня.
2. Двигать - можно так, как сказал mooncar, а можно самому по onEnterFrame
3. код на кнпках не писать.

все
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 09.06.2011, 18:56
vivado вне форума Посмотреть профиль Отправить личное сообщение для vivado Найти все сообщения от vivado
  № 7  
Ответить с цитированием
vivado

Регистрация: Aug 2010
Сообщений: 282
Цитата:
Сообщение от dark256 Посмотреть сообщение
Чем тут помочь-то?
Литературным языком рассказать ВСЕ от начала и до конца?
Это малоконструктивно. Не говоря уже о том, что толку будет мало.

1. Хмл - сделайте со вложенными узлами 2-го уровня.
2. Двигать - можно так, как сказал mooncar, а можно самому по onEnterFrame
3. код на кнпках не писать.

все
Ну почему же малоконструктивно и толку мало? Я не прошу все сделать за меня, я прошу помочь освоить мне AS, не думайте что я сижу и нифига не делаю и не пытаюсь...

1. Насчет сделать XML с вложенными узлами я не смог прописать условие по которому будут извлекаться подменюшки. Единственное до чего пока допер это сделал XML с узлами 1 уровня но прописал параметр показывающий что это пункт меню или пункт подменю (при pmenu="0" - меню при pmenu="1" - подменю)... В подменю прописал переменную которая говорит к какому пункту меню енто подменю относится (NumMenu). Примерно так.

PHP код:
<all_menu>
<
menu name="Меню 0" url="" NumMenu="0" pmenu="0"/>
<
menu name="Меню 1" url="" NumMenu="1" pmenu="0"/>
<
menu name="Меню 2" url="" NumMenu="2" pmenu="0"/>

<
menu name="Подменю 1" url="" NumMenu="0" pmenu="1"/>
<
menu name="Подменю 2" url="" NumMenu="0" pmenu="1"/>
<
menu name="Подменю 3" url="" NumMenu="0" pmenu="1"/>
</
all_menu
Дальше планирую Дублировать ролики для Меню и Подменю в зависимости от переменных, как прогу напишу так пришлю на критику, мож подскажите как лучше дальше будет делать.

Старый 09.06.2011, 19:30
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Неверный подход к XML...
Много избыточного и вы совершенно не используете вложенность узлов, отражая ею структуру меню. Теряется сам смысл XML.
Например, нет необходимости указывать, к какому меню относится подменю. Это и так следует из структуры XML.
Так лучше:
Код:
<?xml version="1.0" encoding="utf-8"?>
<all_menu>
	<menu id="1" url="" name="Меню 1">
		<submenu id="1" url="" name=""/>
		<submenu id="2" url="" name=""/>
		<submenu id="3" url="" name=""/>
	</menu>
	<menu id="2" url="" name="Меню 2">
		<submenu id="1" url="" name=""/>
		<submenu id="2" url="" name=""/>
		<submenu id="3" url="" name=""/>
	</menu>
	<menu id="3" url="" name="Меню 3">
		<submenu id="1" url="" name=""/>
		<submenu id="2" url="" name=""/>
		<submenu id="3" url="" name=""/>
	</menu>	
</all_menu>
Если проблемы это распарсить, это понятно, напишите об этом.
__________________
Идите первым!


Последний раз редактировалось mooncar; 09.06.2011 в 19:39.
Старый 09.06.2011, 20:48
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 9  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
во. именно. далее читаем про childNodes
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 10.06.2011, 11:38
vivado вне форума Посмотреть профиль Отправить личное сообщение для vivado Найти все сообщения от vivado
  № 10  
Ответить с цитированием
vivado

Регистрация: Aug 2010
Сообщений: 282
Цитата:
Сообщение от mooncar Посмотреть сообщение
Неверный подход к XML...
Много избыточного и вы совершенно не используете вложенность узлов, отражая ею структуру меню. Теряется сам смысл XML.
Например, нет необходимости указывать, к какому меню относится подменю. Это и так следует из структуры XML.
Так лучше:
Код:
<?xml version="1.0" encoding="utf-8"?>
<all_menu>
	<menu id="1" url="" name="Меню 1">
		<submenu id="1" url="" name=""/>
		<submenu id="2" url="" name=""/>
		<submenu id="3" url="" name=""/>
	</menu>
	<menu id="2" url="" name="Меню 2">
		<submenu id="1" url="" name=""/>
		<submenu id="2" url="" name=""/>
		<submenu id="3" url="" name=""/>
	</menu>
	<menu id="3" url="" name="Меню 3">
		<submenu id="1" url="" name=""/>
		<submenu id="2" url="" name=""/>
		<submenu id="3" url="" name=""/>
	</menu>	
</all_menu>
Если проблемы это распарсить, это понятно, напишите об этом.
Да вы правы так намного красивее, и действительно теперь проблемы с распарсить возникли (((

Цитата:
Сообщение от dark256 Посмотреть сообщение
во. именно. далее читаем про childNodes
Про childNodes почитал, со своей XML делал так
Код AS1/AS2:
MenuName = menu.firstChild.attributes.name;
а в "правильном" XML я так понимаю нужно
делать примерно так

Код AS1/AS2:
//Для главных менюшек
idMenu = menu.firstChild.attributes.id;
MenuName = menu.firstChild.attributes.name;
//Для подменюшек
idMenu = menu.firstChild.ChildNodes.attributes.id;
MenuName = menu.firstChild.ChildNodes.attributes.name;
Или так неправильно делать, лучше в массив и циклом грузить? Но тогда чето пока я не понимаю как из массива все доставать по id.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
xml аккордион , xml меню , аккордион меню , раскрывающееся меню
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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