我有几个阶段事件处理程序,可以在舞台上的几个动态生成的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);
}
如果有人能帮助解决这个令人讨厌的行为,我将非常感激!谢谢!
答案 0 :(得分:0)
只需一次尝试,而不是alpha 0,在鼠标悬停时尝试alpha = 0.1或更高。
另一个值得给出的尝试,停止在“mcClicked”中传播MouseEvent - 这是为了检查鼠标移动的其他地方是否正在从舞台上移除。