Actionscript 3 ActionScript 3树-鼠标悬停“后弹出节点值”;X";秒
我是ActionScript3的新手(如果这是一个幼稚的问题,我很抱歉),我正在处理一个使用“树”菜单的现有项目。树中的每个节点表示应用程序中的一个部分。不幸的是,某些节名称(即节点显示值中显示的名称)相当长,需要截断文本。因此,有时节名称会被截断。为了解决这个问题,我们希望让用户能够通过将鼠标光标在节点上移动“X”秒来查看整个标题,在这种情况下,一个小弹出窗口将呈现节点的标签 示例Actionscript 3 ActionScript 3树-鼠标悬停“后弹出节点值”;X";秒,actionscript-3,flash,actionscript,Actionscript 3,Flash,Actionscript,我是ActionScript3的新手(如果这是一个幼稚的问题,我很抱歉),我正在处理一个使用“树”菜单的现有项目。树中的每个节点表示应用程序中的一个部分。不幸的是,某些节名称(即节点显示值中显示的名称)相当长,需要截断文本。因此,有时节名称会被截断。为了解决这个问题,我们希望让用户能够通过将鼠标光标在节点上移动“X”秒来查看整个标题,在这种情况下,一个小弹出窗口将呈现节点的标签 示例 public var menuTree:Tree; public function DoSomething()
public var menuTree:Tree;
public function DoSomething(){
menuTree.addEventListener(ListEvent.ITEM_ROLL_OVER, onListItemRollover, false, 100);
}
private function onListItemRollover(event:ListEvent):void {
//IF MOUSE CURSOR IS STILL OVER NODE FOR "X" SECONDS DISPLAY NODE'S LABEL IN POP-UP
}
提前谢谢大家 如果不了解您的设置,我可能会设置如下内容:
var timer:Timer;
var currentItem:*
for each (var node:* in menuTree) {
node.addEventListener(MouseEvent.MOUSE_OVER, overHandler);
node.addEventListener(MouseEvent.MOUSE_OUT, outHandler);
}
function overHandler(event:MouseEvent):void {
stopTimer();
currentItem = event.currentTarget;
timer = new Timer(2000, 1);
timer.addEventListener(TimerEvent.TIMER, showPopup);
timer.start();
}
function outHandler(event:MouseEvent):void {
stopTimer();
}
function showPopup(timerEvent:TimerEvent):void {
stopTimer();
//show popup code here
//use currentItem
}
function stopTimer():void {
if (timer) {
timer.stop();
timer.removeEventListener(TimerEvent.TIMER, showPopup);
}
}
因此,您不需要将事件侦听器添加到menuTree,而是要循环遍历树中的每个项,并向该项添加一个侦听器。然后,当用户滚动任何给定的项目时,它会启动一个计时器,2秒后将运行一个函数来显示弹出窗口。我刚刚注意到您使用的是一个列表类。我以前没有使用过这些方法,但我相信在onListItemRollover方法中使用计时器仍然是您想要做的。感谢您的回复,greetification!非常感谢。我来试一试。但是,如果鼠标不再位于列表项上方,计时器的完整事件是否仍会被触发?也就是说,如果我将鼠标悬停在某个节点上,然后在计时器完成之前将其移出该节点,则仍将调用“showPopup()”?我已根据您随后的问题更新了代码。试试看。非常感谢你的问候!这起作用了。再次感谢!