我有两个按钮,每个按钮的宽度都是屏幕的一半,也是舞台的整个高度。因此,一个按钮位于屏幕左侧,另一个按钮位于屏幕左侧。当按下和释放按钮时,我都有事件监视器
我的问题是,如果我单击一个按钮并拖动到另一侧,事件会认为鼠标未释放。
例如,右键应该让我的角色飞起来,所以当我点击它时,它会飞,如果我将鼠标拖到左键并释放,我的角色继续飞行。我相信这是因为右按钮在按下按钮形状时无法检测到鼠标。有什么方法吗?
答案 0 :(得分:0)
这可以在AS2中轻松检测到,但是他们在AS3中删除了它(出于某种原因)。
我要做的就是添加一个全局的mouseUp-listener;
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
function mouseUpHandler(e:Event) {
if( _clickedObject ) _clickedObject.dispatchEvent(new Event("releasedOutsideEvent"));
}
然后在我的MOUSE_DOWN处理程序中添加
_clickedObject = e.target;
并在MOUSE_UP处理程序中
_clickeObject = null;
或类似的东西。可能有一两个错误,但它应该有效。
答案 1 :(得分:0)
考虑
MouseEvent.MOUSE_OUT
也是。
当你开始拖动(MOUSE_DOWN)时,将isCurrentlyDragging布尔值设置为true(当然在事件处理函数之外定义)。在MOUSE_OUT上,如果当前正在拖动,则决定将其作为MOUSE_UP处理。
在MOUSE_UP和MOUSE_OUT上设置isCurrentlyDragging = false;