as3中按钮的问题

时间:2011-10-25 13:51:16

标签: actionscript-3 button flash-cs5

我有两个按钮,每个按钮的宽度都是屏幕的一半,也是舞台的整个高度。因此,一个按钮位于屏幕左侧,另一个按钮位于屏幕左侧。当按下和释放按钮时,我都有事件监视器 我的问题是,如果我单击一个按钮并拖动到另一侧,事件会认为鼠标未释放。
例如,右键应该让我的角色飞起来,所以当我点击它时,它会飞,如果我将鼠标拖到左键并释放,我的角色继续飞行。我相信这是因为右按钮在按下按钮形状时无法检测到鼠标。有什么方法吗?

2 个答案:

答案 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;