Actionscript 3 Flex鼠标光标类型-或-确定组件是否为控件

Actionscript 3 Flex鼠标光标类型-或-确定组件是否为控件,actionscript-3,apache-flex,flex4,Actionscript 3,Apache Flex,Flex4,您将如何通过编程方式获取应用程序当前使用的光标类型?我想检查它是否是鼠标或.HAND 我这样做的原因是,当在线编辑组件中的数据时(例如,DataGrid),我在组件周围放置了一个应用程序级别的掩码。如果用户在编辑时单击组件外部,我将显示一个警告,警告他们在编辑过程中无法导航 我只想在用户单击“可单击”组件时显示警报和preventDefault();i、 e.可能导致他们离开或打开另一个窗口的人。但当他们点击不可点击的组件时,允许点击;e、 g.空白,或他们想要复制的文本 欢迎对我的原始问题或其

您将如何通过编程方式获取应用程序当前使用的光标类型?我想检查它是否是
鼠标或.HAND

我这样做的原因是,当在线编辑组件中的数据时(例如,
DataGrid
),我在组件周围放置了一个应用程序级别的掩码。如果用户在编辑时单击组件外部,我将显示一个警告,警告他们在编辑过程中无法导航

我只想在用户单击“可单击”组件时显示警报和
preventDefault()
;i、 e.可能导致他们离开或打开另一个窗口的人。但当他们点击不可点击的组件时,允许点击;e、 g.空白,或他们想要复制的文本

欢迎对我的原始问题或其他解决方案作出任何回答。

为什么不设置布尔值:

private var _isEditing:Boolean = false;
然后当他们开始编辑时,设置_isEditing=true;当他们保存或退出时_isEditing=false

然后在可操作组件的单击处理程序上检查标志:

if (_isEditing){
    Alert.show("hey you can't do this");
} else {
    do whatever else here
}

如果手动光标被关闭怎么办?使用GetObjectsDerpoint的组合并检查(对象是否为InteractiveObject)可以告诉您某些点下的对象是否“可单击”(如果它们注册了单击处理程序,则不一定要使用hasEventListener来获取该信息)。我觉得像杰森下面建议的可能是更好的方法。谢谢@shaunhusain。我在下面解释了为什么我不选择JasonReeves的方法。我尝试了InteractiveObject和hasEventListener,发现两者都没有涵盖我感兴趣的所有控件,也没有涵盖太多控件。这就是我如何得出手-光标理论的。为什么不把问题转到它的耳朵上呢?不要试图弄清楚他们点击的东西是否会导致导航离开。让它发生,然后在处理导航的代码中,如果他们正在编辑,则停止导航。如果您使用欧芹、Swiz或Spring Actionscript,有一个很好的Cairngorm导航库可以让您轻松地完成这项工作。没问题,我可以想到的另一个选项(尽管这仍然是一些次要的工作)是创建一个接口,然后在希望行为作用的basecomponents的扩展中实现该接口,例如,如果你有一个LinkButton和一个Button想要应用行为(但不是全部),你可以扩展LinkButton实现INotDuringEdit,然后在你想让它有其他行为的地方使用你的扩展,然后回到我说的方法(只检查你的自定义接口)。虽然实现起来不是很快,但维护hanks应该很容易,但我的方法允许您在开始/结束编辑时发送事件,这是在应用程序级别管理的,而不是在每个可能的可单击控件上放置单击侦听器。它更易于维护。