2009-12-17 123 views
0

AS2中AS3代码的等效代码是什么?AS2中Event.MOUSE_LEAVE的等价物

stage.addEventListener(Event.MOUSE_LEAVE, callbackFunc); 

private function callbackFunc(e:Event):void { 
    // do something 
} 
+0

我环顾四周,似乎每个人都依靠估计光标的前一个动作,以确定它是否会通过使用输入框架事件离开舞台,但这不可靠并且性能会受到影响。像这样的事情让我很高兴我只用AS3进入Flash :) – Aaron 2009-12-17 17:17:52

回答

1

我这个挣扎了一会儿,最终使用Flash HTML对象的JavaScript事件侦听器,然后绑到Flash的外部接口中,为鼠标悬停事件发生时设置标志。这似乎没有任何错误完美的工作。

1

起初我以为这只是一个rollout-

stage.onRollOut = function(){ 
    //the action could occur here 
} 

这似乎并没有正常工作......不过话又说回来了;您可以将舞台定义为MovieClip()。 当涉及到这种事情时,AS2有点笨拙。我认为大部分解决方案都是黑客行为。我当然非常喜欢它是多么简单。 :)

+0

这并不令人伤心,因为要确定鼠标是否离开,MC需要占用整个舞台......如果它占据了在整个舞台上,事件永远不会发生,因为当鼠标退出舞台时,Flash仍然只知道它在舞台上的最后位置。 – Aaron 2009-12-17 17:58:46

+0

这个问题的关键是在AS3的实现中暴露出来,因为STAGE_LEAVE事件在Event类而不是MouseEvent类中。 – Aaron 2009-12-17 18:00:09

+0

不幸的是,即使处理事件的阶段它也不起作用。至少,不适合我:P – Aaron 2009-12-17 18:23:55

1

您可以检查_xmouse属性看,如果鼠标不在剪辑

_root.onMouseMove = function() 
{ 
    if(
     _xmouse <= 0 || 
     _ymouse <= 0 || 
     _xmouse >= Stage.width - 1 || 
     _ymouse >= Stage.height - 1 
    ) 
    outCallBack(); 
} 

function outCallback() 
{ 
    bla; 
} 
+0

这要求用户单击窗口外部,否则,当鼠标离开舞台时,它不会将鼠标位置更新到播放器的边界之外,尽管这可能是与此问题最接近的。 – Aaron 2009-12-23 15:24:26