Actionscript 3 鼠标向上移动事件无法正常工作
谁能帮我一下吗。 附件是fla,其中有一部分代码我正在为一个项目工作 在鼠标的帮助下,您可以在图像上画一个圆,但由于某些原因,鼠标向上事件不起作用。当eventlisteners连接到舞台时,它可以正常工作,但当它连接到movieclip时,它不工作 另外,我如何限制只在矩形的movieclip内绘制圆 这是密码Actionscript 3 鼠标向上移动事件无法正常工作,actionscript-3,flash-cs4,Actionscript 3,Flash Cs4,谁能帮我一下吗。 附件是fla,其中有一部分代码我正在为一个项目工作 在鼠标的帮助下,您可以在图像上画一个圆,但由于某些原因,鼠标向上事件不起作用。当eventlisteners连接到舞台时,它可以正常工作,但当它连接到movieclip时,它不工作 另外,我如何限制只在矩形的movieclip内绘制圆 这是密码 const CANVAS:Sprite = new Sprite(); var _dragging:Boolean = false; var _corner:Point; va
const CANVAS:Sprite = new Sprite();
var _dragging:Boolean = false;
var _corner:Point;
var _corner2:Point;
menFront.addEventListener(MouseEvent.MOUSE_DOWN, setAnchor);
menFront.addEventListener(MouseEvent.MOUSE_UP, completeRect);
function setAnchor(e:MouseEvent):void{
trace("mouse down");
if(!_dragging){
CANVAS.graphics.clear();
_corner = new Point(e.stageX, e.stageY);
_dragging = true;
menFront.addEventListener(MouseEvent.MOUSE_MOVE, liveDrag);
}
}
function completeRect(e:MouseEvent):void{
trace("mouse up");
if(_dragging){
_dragging = false;
menFront.removeEventListener(MouseEvent.MOUSE_MOVE, liveDrag);
CANVAS.graphics.lineStyle(0, 0, 0);
CANVAS.graphics.beginFill(0x222222,.5)
_corner2 = new Point(e.stageX, e.stageY);
trace(Point.distance(_corner,_corner2).toFixed(2));
CANVAS.graphics.drawCircle(_corner.x, _corner.y, Point.distance(_corner,_corner2));
addChild(CANVAS);
}
}
function liveDrag(e:MouseEvent):void{
CANVAS.graphics.clear();
CANVAS.graphics.lineStyle(0, 0x999999);
_corner2 = new Point(e.stageX, e.stageY);
//trace(Point.distance(_corner,_corner2).toFixed(2));
CANVAS.graphics.drawCircle(_corner.x, _corner.y, Point.distance(_corner,_corner2));
addChild(CANVAS);
}
如果将MouseEvent.MOUSE\u添加到要拖动的对象中,则只有在鼠标向上移动时项目位于鼠标下方时才会触发事件,但由于您使用鼠标移动更新项目,因此这是鼠标向上移动与鼠标移动之间的竞争条件 为了避免此类问题,您需要保证在实时更新周期中,每当鼠标启动时,您都会收到鼠标启动。为此,在需要时将事件侦听器添加到stage,如下所示:
menFront.addEventListener(MouseEvent.MOUSE_DOWN, setAnchor);
function setAnchor(event:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, completeRect);
// your other functionality
}
function completeRect(event:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, completeRect);
// your other functionality
}
这样,如果您在其他地方单击,您的completeRect不会无意中被调用
希望这对您有所帮助如果您将MouseEvent.MOUSE\u添加到正在拖动的对象,则仅当项目在鼠标下方时才会触发该事件,但由于您正在使用MOUSE\u MOVE更新项目,因此这是鼠标移动与鼠标移动之间的竞争条件 为了避免此类问题,您需要保证在实时更新周期中,每当鼠标启动时,您都会收到鼠标启动。为此,在需要时将事件侦听器添加到stage,如下所示:
menFront.addEventListener(MouseEvent.MOUSE_DOWN, setAnchor);
function setAnchor(event:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, completeRect);
// your other functionality
}
function completeRect(event:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, completeRect);
// your other functionality
}
这样,如果您在其他地方单击,您的completeRect不会无意中被调用
希望这有帮助这可能也会引起兴趣:刚刚注意到我在上一条评论中的链接已过期:这可能也会引起兴趣:刚刚注意到我在上一条评论中的链接已过期:嘿,你应该投票或标记为回答你的问题的回答。如果你觉得我可以提供更多帮助,请发表评论,我会更全面地充实我的答案。嘿,你应该投票或将回答你问题的答案标记为回答。如果你觉得我可以提供更多帮助,请发表评论,我会更全面地给出我的答案。