在MouseEvent.CLICK调用后,AS3 MouseEvent.MOUSE_MOVE事件停止响应

时间:2010-11-06 14:06:55

标签: flash actionscript-3 event-handling mouseevent

我有几个阶段事件处理程序,可以在舞台上的几个动态生成的moviecilps上启用鼠标悬停,然后更改其alpha以指示鼠标在特定的mc上...相当简单(mcOver处理程序)。另外,我还想知道MC被点击了什么,所以我用鼠标悬停时用动态movieclip的ID更新公共变量(public var activemc:Number)(使用hitTest检查,这就是EventListener的原因)添加到舞台而不是MC),在mcClicked处理程序中检查:

这是在构造函数中:

//stage.addEventListener(MouseEvent.MOUSE_DOWN, startDrawing);
   //stage.addEventListener(MouseEvent.MOUSE_UP, stopDrawing);
   stage.addEventListener(MouseEvent.MOUSE_MOVE, mcOver);
   //stage.addEventListener(Event.MOUSE_LEAVE, outlinesHide);
   stage.addEventListener(MouseEvent.CLICK, mcClicked);

然而,当我点击舞台上的任何动画片段时,鼠标悬停行为(当结束时为alpha 0,出局时为alpha 1)停止工作,并且mcClicked ID检查(下方)完全停止工作。我不知道这是否与焦点有关:

private function mcClicked(event:MouseEvent):void {

myTextField.text = String(activemc); // activemc is a public var:Number with the movieclip //ID

}

然后我尝试再次为stage mouse_move添加事件处理程序,这使鼠标悬停再次工作,但仅再次点击一次,之后再次停止:

private function mcClicked(event:MouseEvent):void {

myTextField.text = String(activemc); // activemc is a public var:Number with the movieclip //ID


stage.addEventListener(MouseEvent.MOUSE_MOVE, mcOver);
}

如果有人能帮助解决这个令人讨厌的行为,我将非常感激!谢谢!

1 个答案:

答案 0 :(得分:0)

只需一次尝试,而不是alpha 0,在鼠标悬停时尝试alpha = 0.1或更高。

另一个值得给出的尝试,停止在“mcClicked”中传播MouseEvent - 这是为了检查鼠标移动的其他地方是否正在从舞台上移除。