我正在尝试在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>
我对你的问题做了一个简短的评论,但我想我会在答案中详细说明。
由于我确信您将做的不仅仅是您的示例,因此以下是这些属性的工作原理:
mouseEnabled="false" - 这表示你不能点击我,但你可以点击我的孩子。当您禁用单个项目或希望单击事件通过项目传递到其子项时,这非常有效。
mouseChildren="false" - 这表示你不能点击我的孩子。 如果您要在应用程序中构建可能包含 10 个显示对象的复杂叠加层,并希望鼠标忽略所有对象,这将非常有用。
希望这有帮助!