使用Flash Player 11.2,我们现在可以使用鼠标右键访问鼠标事件:
然而,当我尝试使用它们实现鼠标右键拖放时,似乎一旦鼠标右键按下,我就不再获得MouseEvent.MOUSE_MOVE和舞台的MouseX和MouseY成员停止更新,直到释放按钮。这使得实际上不可能实现拖放。
使用下面Flash Builder中的代码示例来查看我的意思:
这是AS3的限制吗?我似乎无法找到任何有关它的文档。
代码示例:
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class TestFlash extends Sprite
{
public function TestFlash()
{
if(stage){
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onLMBDown);
stage.addEventListener(MouseEvent.MOUSE_UP, onLMBUp);
stage.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN, onRMBDown);
stage.addEventListener(MouseEvent.RIGHT_MOUSE_UP, onRMBUp);
}
}
private function onMouseMove(event:MouseEvent) : void
{
trace("Mouse Pos, from event: x = " + event.localX + " y = " + event.localY + " from stage: x = " + stage.mouseX + " y = " + stage.mouseY);
}
private function onRMBDown(event:MouseEvent) : void
{
trace("RMB down");
}
private function onRMBUp(event:MouseEvent) : void
{
trace("RMB up");
}
private function onLMBDown(event:MouseEvent) : void
{
trace("LMB down");
}
private function onLMBUp(event:MouseEvent) : void
{
trace("LMB up");
}
}
}
答案 0 :(得分:0)
根据您所描述的问题判断,我认为您需要添加输入框架功能,否则触发器将仅在单击鼠标的框架上以及在其释放时激活
addEventListener(Event.ENTER_FRAME, dragdrop)
function dragdrop(event:Event):void {
"add dragging event here"
}