我正在做一个弹性项目
我希望使用鼠标提供一些 UI 功能-我有两个不同的 UI 事件要通过鼠标来实现 a) 更改值 b) 删除对象
我似乎没有足够的鼠标点击事件。我避免使用右键单击,因为它有一些默认选项(其签署将影响整个项目——不仅仅是这个)。我有用于更改值的鼠标单击 - 我如何使用双击,因为单击事件似乎事先被调用?
有什么想法吗?
我正在做一个弹性项目
我希望使用鼠标提供一些 UI 功能-我有两个不同的 UI 事件要通过鼠标来实现 a) 更改值 b) 删除对象
我似乎没有足够的鼠标点击事件。我避免使用右键单击,因为它有一些默认选项(其签署将影响整个项目——不仅仅是这个)。我有用于更改值的鼠标单击 - 我如何使用双击,因为单击事件似乎事先被调用?
有什么想法吗?
如果不知道您正在编辑什么,值是什么等,就不能说太多。
一个常见的习惯用法是在选定项目的边缘显示一个“X”图标,仅单击该图标会触发删除。
private var doubleClickOccurred:Boolean = false;
private var timer:Timer = new Timer(100, 1);
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
myLabel.addEventListener(MouseEvent.CLICK, checkSingleOrDoubleClick);
myLabel.addEventListener(MouseEvent.DOUBLE_CLICK, checkSingleOrDoubleClick);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, handleClick);
}
private function checkSingleOrDoubleClick(event:MouseEvent):void
{
if(event.target == myLabel && event.type == MouseEvent.DOUBLE_CLICK)
{
// set the flag and let the timer complete event
// take care of the click handling
doubleClickOccurred = true;
trace(" double clicked");
}
else if( event.type == MouseEvent.CLICK)
{
// start timer to wait till the double click event
// gets called
timer.start();
trace("Starting timer");
}
}
private function handleClick(event:Event):void
{
if(doubleClickOccurred)
{
// handle double click event
trace("Yes");
}
else
{
// handle single click
trace("No");
}
// reset flag for capturing future events
doubleClickOccurred = false;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Label id="myLabel" text="Click Me" doubleClickEnabled="true" />
输出: 1) 如果在标签上单击鼠标,将调用单击登录,即 trace("No")
2) 如果双击标签,将调用 trace("yes")。
我希望这段代码能回答您关于处理单次和双击 Flex 组件的问题。