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

Вернуться   Форум Flasher.ru > Flash > Flex

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

Регистрация: Jan 2010
Сообщений: 211
По умолчанию Подсветка элементов в MenuBar

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

Есть меню с примерно таким провайдером:
Код AS3:
private var menubarXML:XMLList = <>
<menuitem label="Management">
    <menuitem label="Item1"/>
</menuitem>
<menuitem label="Additions">
    <menuitem label="Item2"/>
    <menuitem label="Item3"/>
    <menuitem label="Item4"/>
</menuitem></>;
[Bindable] public var menuBarCollection:XMLListCollection;
 
...
menuBarCollection = new XMLListCollection(menubarXML); //в init()
...
 
<mx:MenuBar id="menuBar" top="0" right="0" left="0" width="100%" height="26" dataProvider="{menuBarCollection}" labelField="@label" itemClick="menuBarItemClickHandler(event)"/>
В обработчике menuBarItemClickHandler я инспектирую выбранный элемент и меняю стейт в зависимости от данных в структуре (тут она сильно урезана).

Вопрос в следующем: в зависимости от действий пользователя (или события с сервера) должен подсветиться - стать красным - один или несколько пунктов меню. Скажем, в определенный момент красным должен подсветиться "Addition" и "Item3". Подсветка верхнего уровня проблемы не вызывает, типа такого:
Код AS3:
(menuBar.menuBarItems[1] as MenuBarItem).setStyle("color", "#ff0000");
А вот как подсветить нужный пункт в выпадающем меню?

Если добавить обработчик в MenuBar menuShow, то не составит труда сделать красными все пункты: event.menu.setStyle(... А вот как конкретный - что-то не получается разобраться. Спасибо.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Добавьте еще один параметр в XML (для каждого итема) и отслеживайте его в MenuBarItem, например.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 06.02.2012, 21:45
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 3  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
У меня там и так параметров много. Мне отслеживать не надо.
Мне нужно из любого места проекта сделать пункт меню другим цветом. Причем, до того, как этот пункт будет выбран пользователем. Как обратиться к любому пункту меню?

Старый 06.02.2012, 23:09
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Пока меню закрыто никаких "пунктов", кроме верхнего уровня, не существует. Не к чему обращаться.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 07.02.2012, 00:57
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 5  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
О! Согласен. У MenuBar массив menus действительно пустой.
Вот у меня тут и проблема ... Скажем, для двух пунктов меню у меня есть 2 флага - нужно выделять или нет. То есть при отображении выпадающего меню я уже буду знать - нужно ли соответствующие пункты выделить цветом. Также я могу в хандлере menuShow определить - "нужное" ли меню открывают (остальные игнорировать). А вот зальше затык - у меня есть event.menu в этом хандлере, есть возможность работать с menuBar, но вот как выделить именно нужные пункты - я не понимаю.

Добавлено через 15 часов 35 минут
Нет соображений? Как выделить только нужные пункты?

Старый 07.02.2012, 16:41
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Я вам все "соображения" уже в первом посте написал. Делайте свой MenuBarItem, который будет перекрашиваться в зависимости от данных в его data.
__________________
משיח לא בא
משיח גם לא מטלפן

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

Регистрация: Jan 2010
Сообщений: 211
Ну, назвать себя экспертом или профи во флеше я не могу, но если запостил вопрос, то это значит, что изыскания по нему делал.

Вот описание класса MenuBarItem:
Цитата:
Класс MenuBarItem определяет средство визуализации элементов по умолчанию для верхнего уровня строки меню. По умолчанию средство визуализации элементов выводит текст, связанный с каждым элементом на самом верхнем уровне в строке меню, и необязательный значок.
Выпадающий список меню - это явно не "верхний уровень строки меню".
И хотя дальше там написано:
Цитата:
Можно также определить средство визуализации элементов для всплывающих подменю элемента управления MenuBar. Поскольку каждое всплывающее подменю – экземпляр элемента управления Menu, используется класс MenuItemRenderer для определения средства визуализации элементов всплывающих подменю.
тут я не очень понимаю, поэтому и спрашиваю.
Если честно, то рендерить список меню не очень хочется. Уверен, что можно при показе списка проходить по нему и менять определенные пункты. Только вот как?

Старый 07.02.2012, 17:17
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
тут я не очень понимаю, поэтому и спрашиваю.
Что конкретно не понятно и что спрашиваете? Все пункты меню, которые вы видите по-умолчанию являются экземплярами MenuBarItem. Это можно изменить передав свойство menuBarItemRenderer ссылку на фабрику создающую ваши элементы (В mxml достаточно указать полное имя класса рендерера, например "mx.controls.menuClasses.MenuBarItem").
Цитата:
Если честно, то рендерить список меню не очень хочется.
Это вообще о чем?

P.S. справку можете мне не цитировать.
__________________
משיח לא בא
משיח גם לא מטלפן

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

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

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


 


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


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