如果鼠标按钮关闭,有没有办法随时查找?
我有一些代码在鼠标按钮关闭时运行,但是如果我在鼠标按钮关闭的情况下从Flash客户端切换,那么鼠标向上的监听器永远不会被调用,所以我想要帐户通过检查鼠标按钮是否仍然按下来解决这种情况。
理想情况下,我喜欢以下内容:
if (Mouse.isDown) {
trace("down");
} else {
trace("up");
}
答案 0 :(得分:3)
你需要检查MouseEvent::buttonDown
处理程序中的MouseEvent.MOUSE_MOVE
属性来切换一些Boolean
标志
的 UPD 强>
代码:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
* @author www0z0k
*/
[SWF (width="320", height="240", frameRate="24")]
public class Main extends Sprite {
private var _isDown:Boolean = false;
public function Main():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
color = 0;
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
private function onMove(e:MouseEvent):void {
color = e.buttonDown ? 0xffff00 : 0x0000ff;
}
public function set color(value:int):void {
graphics.clear();
graphics.beginFill(value);
graphics.drawRect(0, 0, 320, 240);
graphics.endFill();
}
}
}
result - 我按下按钮,将指针移到firefox外面,释放按钮,单击其他应用程序窗口,然后按alt-tab返回firefox并移动鼠标;此时我的swf识别出鼠标按钮被释放
更新2
它的工作方式与firefox 3.6.10一样,并且如firefox 7.0.1中的问题所述
答案 1 :(得分:2)
我最后添加了一个Event.ACTIVATE
监听器。每当Flash获得焦点时,我都会检查鼠标按钮是否被认为是关闭的。由于在 Flash客户端获得焦点之前鼠标按钮无法在Flash客户端内部关闭,因此我可以放心地认为它应该启动并调用相应的代码。