Изменить метку NativeMenuItem - PullRequest
0 голосов
/ 13 марта 2009

Я экспериментирую с Adobe AIR и API Карт Google в Flex Builder. Вопрос в том, что я делаю NativeMenu, и мне было интересно, как я могу изменить метку элемента «Полноэкранный» на «Выход из полноэкранного режима», когда сцена находится в полноэкранном режиме?

Если вы видите в коде что-то, что можно / нужно написать лучше, пожалуйста, дайте мне знать;)

Вот мой код:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication 
xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="absolute"
height="600"
width="700"
minHeight="100"
minWidth="100"
showStatusBar="false"
title="Gmaps 0.002"
>
<maps:Map 
xmlns:maps="com.google.maps.*" 
id="map" 
mapevent_mapready="onMapReady(event)" 
width="100%" 
height="100%" 
url="" 
key=""
/>

   <mx:Button id="fullscreenButton" click="toggleFullScreen()"/>
<mx:Script>
<![CDATA[


import com.google.maps.LatLng;
import com.google.maps.Map;
import com.google.maps.MapEvent;
import com.google.maps.MapType;
import com.google.maps.MapMouseEvent;
import com.google.maps.controls.MapTypeControl;
import com.google.maps.controls.ZoomControl;
import com.google.maps.controls.PositionControl;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.events.Event;
import mx.core.Window;
import flash.display.StageDisplayState;






private function onMapReady(event:Event):void {
  map.setCenter(new LatLng(59.908165,10.742719), 14, MapType.NORMAL_MAP_TYPE);


        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
    function keyDownHandler(event:KeyboardEvent):void {
    if (event.keyCode == 70) {
        toggleFullScreen();
        }
    }

    createMenu();

  map.enableScrollWheelZoom();
  map.enableContinuousZoom();
  map.enableControlByKeyboard();



   systemManager.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenHandler);





  map.addEventListener(MapMouseEvent.ROLL_OVER, function(event:MapMouseEvent):void {
    map.addControl(new ZoomControl());
    map.addControl(new PositionControl());
    map.addControl(new MapTypeControl());
  });


  map.addEventListener(MapMouseEvent.ROLL_OUT, function(event:MapMouseEvent):void {
    map.removeControl(new ZoomControl());
    map.removeControl(new PositionControl());
    map.removeControl(new MapTypeControl());
  });





}



private function createMenu():void{
      var mainMenu:NativeMenu = new NativeMenu();
            var fullscreenMenu:NativeMenuItem = new NativeMenuItem("Fullscreen");
            var maximizeMenu:NativeMenuItem = new NativeMenuItem("Maximize");
            var restoreMenu:NativeMenuItem = new NativeMenuItem("Restore");
            var separatorA:NativeMenuItem = new NativeMenuItem("A", true); 
            var closeMenu:NativeMenuItem = new NativeMenuItem("Close");
            fullscreenMenu.addEventListener(Event.SELECT, handleMenuClick);
            maximizeMenu.addEventListener(Event.SELECT, handleMenuClick);
            restoreMenu.addEventListener(Event.SELECT, handleMenuClick);
            closeMenu.addEventListener(Event.SELECT, handleMenuClick);
            mainMenu.addItem(fullscreenMenu);
            mainMenu.addItem(maximizeMenu);
            mainMenu.addItem(restoreMenu);
            mainMenu.addItem(separatorA);
            mainMenu.addItem(closeMenu);

            //fullscreenMenu.enabled = false;
            //fullscreenMenu.label = "Test";







            this.contextMenu=mainMenu;
     }

     private function handleMenuClick(e:Event):void{
      var menuItem:NativeMenuItem = e.target as NativeMenuItem;
            if(menuItem.label == "Fullscreen") toggleFullScreen();
            if(menuItem.label == "Maximize") this.maximize();
            if(menuItem.label == "Restore") this.restore();
            if(menuItem.label == "Close") this.close();
     }





     private function fullScreenHandler(evt:FullScreenEvent):void {
  if (evt.fullScreen) {
    //fullscreenMenu.label = "Test";

  } else {

  }
}



     private function toggleFullScreen():void {
  try {
    switch (systemManager.stage.displayState) {
      case StageDisplayState.FULL_SCREEN_INTERACTIVE:
        systemManager.stage.displayState = StageDisplayState.NORMAL;
        break;
      default:
        systemManager.stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
        break;
    }
  } catch (err:SecurityError) {
  // ignore
  }
}





]]>
  </mx:Script>
  </mx:WindowedApplication>

1 Ответ

1 голос
/ 13 марта 2009

чтобы изменить метку на NativeMenu, вы можете попробовать это

yourNativeMenu.getItemAt(0).label="new_label";

где getItemAt(0) вернуть первый элемент в NativeMenu

...