2011-01-27 8 views
0

Adob​​e AIRはAlert.show()を提供します。 (「:窓のないアプリケーションの作成例」):ただし、これは典型的なトレーの例のように何のトップレベルウィンドウが存在しない場合に失敗しているようだトップレベルウィンドウのない警告ボックスを表示するにはどうすればよいですか?

http://livedocs.adobe.com/flex/3/html/taskbar_1.html

私はAlert.show()仕事をするために失敗しました。この状況では警告()もないと思われます。

車輪を改造することなく、このような状況でアラートプロンプト(モーダルまたはノンモダル)を表示する方法はありますか?

例AIRトレイアプリケーションスケルトン:

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" 
         windowComplete="init(event)" visible="false"> 
<fx:Script> 
    <![CDATA[ 
    import flash.events.InvokeEvent; 

    import mx.controls.Alert; 
    import mx.events.CloseEvent; 

    import mx.events.AIREvent; 

    // As windows does not work without icon, we MUST embed it. 
    // Stories told differently on the net are void. 
    [Embed(source="icons/AIRApp_16.png")] private var img16:Class; 
    [Embed(source="icons/AIRApp_32.png")] private var img32:Class; 
    [Embed(source="icons/AIRApp_48.png")] private var img48:Class; 
    [Embed(source="icons/AIRApp_128.png")] private var img128:Class; 

    private function helloworld(evt:Event):void { 
    //This does not work 
    Alert.show("hello world"); 
    } 

    private function closer(e:CloseEvent):void 
    { 
    if (e.detail == Alert.YES) { 
    NativeApplication.nativeApplication.icon.bitmaps = []; 
    NativeApplication.nativeApplication.exit(); 
    } 
    } 

    private function doexit(event:Event):void { 
    //This does not work either 
    Alert.show("Really?","Exit application", Alert.YES | Alert.NO | Alert.NONMODAL, null, closer, null, 3); 
    } 

    protected function init(event:AIREvent):void { 

    NativeApplication.nativeApplication.autoExit = false; 

    var iconMenu:NativeMenu = new NativeMenu(); 

    var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit")); 
    exitCommand.addEventListener(Event.SELECT, doexit); 

    NativeApplication.nativeApplication.icon.bitmaps = [new img16, new img32, new img48, new img128]; 

    if (NativeApplication.supportsSystemTrayIcon) { 

    var systray:SystemTrayIcon = NativeApplication.nativeApplication.icon as SystemTrayIcon; 
    systray.tooltip = "Monitor Application"; 
    systray.menu = iconMenu; 
    systray.addEventListener(ScreenMouseEvent.CLICK, helloworld); 

    } else if (NativeApplication.supportsDockIcon) { 

    var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon; 
    dock.menu = iconMenu; 
    NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, helloworld); 
    } 
    } 

    ]]> 
</fx:Script> 
<fx:Declarations> 
    <!-- Platzieren Sie nichtvisuelle Elemente (z. B. Dienste, Wertobjekte) hier --> 
</fx:Declarations> 
</s:WindowedApplication> 

メモこのトラブルを引き起こしているものであることにも保存されなければならない「可視=偽」。

+0

BTWのアイコンは、AIR SDKのサンプルフォルダにあります。 – Tino

答えて

0

いいえアプリケーションは、AirとFlexの両方で、ルートレベルのオブジェクトです。すべてのアラートは、そのオブジェクトの子でなければなりません。親がvisible = falseを持つ場合、子は見えません。

申し訳ありません。

Alert.show()を呼び出す前に、可視性をtrueに設定することを考えましたか?

+0

ありがとう、私はそれを正確に恐れていた。アラートが表示されている間、ウィンドウは非表示になります。だから私は2つの選択肢しかないと思う: A)ホイールを再作成するには、myAlertウィンドウクラスを作成するか、 B)メインウィンドウを透明にして、クロムなしに切り替えて、実質的に警告が表示されないようにします。 show() さて、私は変種A)、一口に行きます。ありがとう。 – Tino

関連する問題