2009-03-13 2 views
0

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

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

Вот мой код:

<?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

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

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

где getItemAt(0) возвращает первый элемент в NativeMenu

+0

Когда я добавляю это: mainMenu.getItemAt (0) .label = "Exit fullscreen"; к частной функции fullScreenHandler, я получаю эту ошибку "Строгость и описание \t \t Пути ресурсов \t \t Расположения Времени создания \t Id 1120:. Доступ неопределенного свойства MainMenu \t Gmaps/ЦСИ \t \t Gmaps.mxml линии 138 \t \t 1236943043953 331" , Есть идеи? –

+0

вы должны установить переменную «mainMenu» в качестве переменной экземпляра, вы также можете попробовать получить доступ к mainMenu через «this.contextMenu», – OXMO456

Смежные вопросы