ActionScript 3 树 - 鼠标悬停 "X" 秒后弹出节点值



我对ActionScript 3相当陌生(所以我很抱歉,如果这是一个naïve问题),我正在研究一个使用"树"菜单的现有项目。树中的每个节点表示应用程序中的一个部分。不幸的是,一些节名(即在节点的显示值中显示的内容)相当长,需要截断文本。因此,有时会切断部分名称。为了解决这个问题,我们希望让用户能够通过将鼠标光标移动到节点上"X"秒来查看整个标题,在这种情况下,一个小弹出窗口会呈现节点的标签。

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);
  }
}

因此,不是将事件侦听器添加到菜单树中,而是循环遍历树中的每个项目,并为该项目添加侦听器。然后,当用户滚动到任何给定的项目时,它会启动一个计时器,在2秒后将运行一个函数来显示弹出

最新更新