2

我正在尝试使用 Flash Builder 中的 flex/Action Script 构建桌面 AIR 应用程序。

我想要的功能是: - 透明背景 - 半透明(alpha 0.5)项目/元素,忽略所有鼠标事件并“通过点击”到应用程序后面的应用程序

所以基本上我想要的是元素以与透明背景完全相同的方式处理鼠标事件 - 即。就像你在点击后面的应用程序

这是我尝试过的代码示例。在下面的示例中,单击按钮会触发“单击窗口”警报,以证明单击被按钮忽略并到达具有透明背景的窗口。但是,当我删除单击处理程序时,单击按钮不会导致单击传递到后面的应用程序,就像在透明背景上的其他任何地方单击一样。

有任何想法吗?

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