Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Menu for AIR (http://www.flasher.ru/forum/showthread.php?t=178375)

andrew2312 20.04.2012 01:13

Menu for AIR
 
Добрый день!
Я создал меню и могу обрабатывать нажатия на элементы меню "верхнего уровня"(File, Edit, Help). Подскажите, пожалуйста, как можно работать с элементами Open, Save и т.д. Как сделать, чтобы при нажатии функция определяла по имени какой это элемент (будь то File, или Save)?
Спасибо.
Код AS1/AS2:

import mx.controls.Alert;
import mx.controls.menuClasses.MenuBarItem;
protected function init():void {
  var mbi:MenuBarItem = mBar.menuBarItems[1] as MenuBarItem;
  mbi.addEventListener(MouseEvent.CLICK, mbi2_click);
}
protected function mbi2_click(evt:MouseEvent):void {
  Alert.show("You clicked the third menu bar item.");
  launchMoreInfo();
}

Код:

<mx:MenuBar id="mBar" x="0" y="0" creationComplete="init();" labelField="@label">
        <mx:dataProvider>
                <s:XMLListCollection>
                        <fx:XMLList xmlns="">
                                <menu label="File...">
                                        <item label="New"/>
                                        <item label="Open" />
                                        <item label="Save" />
                                        <item label="Save As" />
                                        <fake type="separator" />
                                        <item label="Exit" />
                                </menu>
                                <menu label="Edit...">
                                        <item label="Cut" />
                                        <item label="Copy" />
                                        <item label="Paste" />
                                        <fake type="separator" />
                                        <item label="Undo" />
                                        <item label="Redo" />
                                        <fake type="separator" />
                                        <item label="radio button" type="radio" toggled="true" />
                                        <item label="check box" type="check" toggled="true" />
                                </menu>
                                <menu label="Help" />
                        </fx:XMLList>
                </s:XMLListCollection>
        </mx:dataProvider>
</mx:MenuBar>


Astraport 20.04.2012 09:41

Да самое простое - проверить if или switch
Код AS3:

protected function menuItemClickHandler(event:MenuEvent):void {
                                var data:String = event.item.data;
 
                                if (data == "New")
                                {
                                        newFunction();
                                } else if (data == "Open")
                                {
                                        openFunction();
                                }
..........
}


andrew2312 03.05.2012 10:42

Спасибо!
На всякий случай пример кода для таких новичков, как я.
Создание меню:
Код:

<mx:MenuBar id="mBar" x="0" y="0" creationComplete="init()" labelField="@label"
  itemClick="menuItemClickHandler(event)">
  <mx:dataProvider>
        <s:XMLListCollection>
                <fx:XMLList xmlns="">
                        <menu label="File...">
                                <item label="New" />
                                <item label="Open" />
                                <item label="Save" />
                                <item label="Save As" />
                                <fake type="separator" />
                                <item label="Exit" />
                        </menu>
                        <menu label="Edit...">
                                <item label="Cut" />
                                <item label="Copy" />
                                <item label="Paste" />
                                <fake type="separator" />
                                <item label="Undo" />
                                <item label="Redo" />
                                <fake type="separator" />
                                <item label="radio button" type="radio" toggled="true" />
                                <item label="check box" type="check" toggled="true" />
                        </menu>
                        <menu label="Help" />
                </fx:XMLList>
        </s:XMLListCollection>
  </mx:dataProvider>
</mx:MenuBar>

С помощью функции function mbi2_click можем управлять "верхними" элементами меню. Здесь обработано нажатие на третий элемент меню - "About". Я не делал там никаких подменю (submenus), просто Alert после нажатия.
Код AS1/AS2:

import mx.controls.Alert;
import mx.controls.menuClasses.MenuBarItem;
protected function init():void {
  var mbi:MenuBarItem = mBar.menuBarItems[2] as MenuBarItem;
  mbi.addEventListener(MouseEvent.CLICK, mbi2_click);
}
protected function mbi2_click(evt:MouseEvent):void {
  Alert.show("You clicked the third menu bar item.");
}

Далее, обработка нажатия на элементы подменю (submenus).
Код AS1/AS2:

protected function menuItemClickHandler(event:MenuEvent):void {
        var data:String = event.item.@label;
        if (data == "New")
        {
                Alert.show("New was clicked");
        }
        else if (data == "Exit")
        {
                Alert.show("Exit was clicked");
        }
}

Astraport, спасибо за помощь!


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

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