| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| T-Noblesse Registriert seit: Jun 2006 Ort: München
Beiträge: 308
| UIComponent und createChildren()
Hallo, ich versuche, mich nach einiger Zeit wieder in Flex zurechtzufinden und stoße auf Probleme: Ich habe eine Klasse MainMenu, die von UIComponent abgeleitet ist. Diese enthält Instanz von MenuBar. Mit folgendem Code versuche ich, MainMenu anzuzeigen: Code: public function MainMenu() : void {
super();
menuCollection = new XMLListCollection(menuList);
}
override protected function createChildren():void{
super.createChildren();
menuBar = new AcceleratorMenuBar();
menuBar.labelField="@label";
menuBar.addEventListener(MouseEvent.CLICK, handleMenuFunction);
menuBar.dataProvider = menuCollection;
menuBar.setFocus();
addChild(menuBar);
} Code: <toppanel:MainMenu x="0" y="0" width="100%" height="29"> </toppanel:MainMenu> Kann mir jemand weiterhelfen? Danke! Gruß, sobo |
| | |
| | #3 (permalink) |
| T-Noblesse Registriert seit: Jun 2006 Ort: München
Beiträge: 308
|
Ok sorry, also hier die ganze Klasse: Code: package com.bla.toppanel {
import com.bla.event.OpenDocumentEvent;
import com.bla.view.toppanel.menuClasses.*;
import flash.events.*;
import flash.utils.getDefinitionByName;
import mx.events.ItemClickEvent;
import mx.collections.ArrayCollection;
import mx.collections.XMLListCollection;
import mx.controls.Alert;
import mx.core.UIComponent;
public class MainMenu extends UIComponent{
public var _accelerators : ArrayCollection;
private var itemEvents : Object;
[Bindable]
public var menuList : XMLList;
[Bindable]
public var menuCollection : XMLListCollection;
private var menuBar:AcceleratorMenuBar;
public function MainMenu() : void {
super();
itemEvents = new Object();
updateXMLList();
menuCollection = new XMLListCollection(menuList);
parseAccelerators(menuList);
addEventListener(KeyboardEvent.KEY_UP, itemListener, false, 0, true);
}
override protected function createChildren():void{
super.createChildren();
menuBar = new AcceleratorMenuBar();
menuBar.labelField="@label";
menuBar.addEventListener(MouseEvent.CLICK, handleMenuFunction);
menuBar.dataProvider = menuCollection;
menuBar.setFocus();
addChild(menuBar);
}
private function updateXMLList() : void {
var path : String = "com.binais.buzzword.event.";
menuList = <>
<menu label={resourceManager.getString('language', 'document')}>
<menuitem label={resourceManager.getString('language', 'new')} data="file_new"/>
...
</menu>
</>;
menuCollection = new XMLListCollection(menuList);
parseAccelerators(menuList);
}
private function parseAccelerators( xml : XMLList ) : void {
_accelerators = new ArrayCollection();
for each( var child:XML in xml.menuitem ) {
if( String(child.@accelerator) ) {
var item : Accelerator = Accelerator.fromString(child.@accelerator);
item.data = String(child.@data);
_accelerators.addItem(item);
}
if(String(child.@itemEvent)) {
itemEvents[String(child.@data)] = String(child.@itemEvent);
}
}
}
private function itemListener(e:Event):void{
if(e is KeyboardEvent){
for each( var accelerator:Accelerator in _accelerators ) {
if( accelerator.test(e as KeyboardEvent)) handleMenuFunction(accelerator.data as String);
}
}
else if(e is ItemClickEvent) handleMenuFunction((e as ItemClickEvent).item.@data);
}
private function handleMenuFunction( menuItem:String) : void {
for (var itemData:String in itemEvents) {
if(itemData == menuItem) {
var e : Class = getDefinitionByName(itemEvents[itemData]) as Class;
dispatchEvent(new e());
}
}
Alert.show("Menu item selected: " + menuItem);
}
}
} Code: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:toppanel="com.bla.view.toppanel.*" xmlns:control="com.bla.control.*"> <mx:Style source="assets/css/Main.css"/> <toppanel:MainMenu x="0" y="0" width="100%" height="29"> </toppanel:MainMenu> </mx:Application> |
| | |
| | #5 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.142
|
Ich würde dir noch empfehlen, measure zu überschreiben.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| flex, komponente, menubar |
| Themen-Optionen | |
| Ansicht | |
| |