我正在尝试使用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>
答案 0 :(得分:0)
我对你的问题做了快速评论,但我想我会详细解答。
由于我确定你要做的不仅仅是你的例子,这些属性的工作方式如下:
将mouseEnabled =&#34;假&#34; - 这表示你无法点击我,但你可以点击我的孩子。当您禁用单个项目或希望点击事件将项目传递给它的孩子时,这种方法很有效。
mouseChildren =&#34;假&#34; - 这表示你无法点击我的孩子。如果您要在应用程序中构建可能包含10个显示对象并希望鼠标全部忽略它们的复杂叠加层,这非常有用。
希望这有帮助!