2

Flash Builder で flex/Action Script を使用してデスクトップ AIR アプリを構築しようとしています。

私の希望する機能は次のとおりです。-透明な背景-すべてのマウスイベントを無視し、アプリの背後にあるアプリケーションに「クリックを渡す」半透明(アルファ0.5)のアイテム/要素

したがって、本質的に私が望んでいるのは、要素が透明な背景とまったく同じ方法でマウスイベントを処理することです-つまり。背後にあるアプリケーションをクリックしているようなものです

これが私が試したコード例です。以下の例では、ボタンをクリックすると「window clicked」アラートが発生し、クリックがボタンによって無視され、背景が透明なウィンドウに到達したことが示されます。ただし、クリック ハンドラーを削除すると、ボタンをクリックしても、透明な背景の他の場所をクリックした場合のように、クリックが背後のアプリケーションに渡されることはありません。

何か案は?

<?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"
                       alwaysInFront="true"
                       creationComplete="maximize();">
    <fx:Style> 
        @namespace s "library://ns.adobe.com/flex/spark"; 
        s|WindowedApplication 
        { 

            skinClass:ClassReference("spark.skins.spark.SparkChromeWindowedApplicationSkin"); 
            background-color:#999999; 
            background-alpha:"0"; 
        }          
    </fx:Style>
    <fx:Script>
        import mx.controls.Alert;

        public function windowClicked():void{
            Alert.show("window clicked");
        }

        </fx:Script>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <s:Window id="mainWindow" height="100%" width="100%" mouseChildren="false" backgroundAlpha="0">

        <s:Button label="Click Through Me Please" alpha="0.5"/>

    </s:Window>

</s:WindowedApplication>
4

1 に答える 1

0

私はあなたの質問に簡単にコメントしましたが、回答で詳しく説明したいと思いました。

上記の例よりも多くのことを行うと確信しているので、これらのプロパティがどのように機能するかを次に示します。

mouseEnabled="false" - これは、私をクリックすることはできませんが、私の子供をクリックすることはできます。これは、単一のアイテムを無効にする場合や、クリック イベントをアイテムからその子に渡す場合にうまく機能します。

mouseChildren="false" - これは、私の子供をクリックできないことを示しています。これは、アプリで 10 個の表示オブジェクトを含む可能性のある複雑なオーバーレイを構築しようとしていて、マウスでそれらをすべて無視したい場合に便利です。

お役に立てれば!

于 2012-12-03T14:14:25.297 に答える