仅在屏幕上显示鼠标坐标as

时间:2017-10-02 19:39:51

标签: actionscript-3 screen mouse

所以我在屏幕上有一个角色,我希望它在当前的鼠标坐标上。

我遇到的问题是当鼠标不在屏幕上时,当我想要它做的是留在鼠标最后的位置时,角色会跳到屏幕上的某个随机位置屏幕。

问题
如何使我的角色停留在鼠标在屏幕上的最后位置?

import flash.ui.Mouse;
import flash.display.MovieClip;
import flash.events.*;
stage.addEventListener (Event.ENTER_FRAME,gameloop);
function gameloop(e:Event){ 
    Mouse.hide();
    Character.x = mouseX;
    Character.y = mouseY;
}

2 个答案:

答案 0 :(得分:1)

您只需在职位分配上加上一些条件:

camera

你要说的是,只有当鼠标位置大于function gameloop(e:Event){ Mouse.hide(); if(mouseX > 0 && mouseX < stage.stageWidth - Character.width){ Character.x = mouseX; } if(mouseY > 0 && mouseY < stage.stageHeight - Character.height){ Character.y = mouseY; } } 且小于舞台宽度时才更新字符x值(如果你的锚点点数为0,则字符宽度越小越有用, 0你的角色)。如果条件没有通过,则角色将保留在其之前的位置。

您的情况可能会有所不同,具体取决于您的角色需要遵守的界限。

但是,如果您的鼠标在屏幕外(在应用程序窗口之外),它根本不应更新mouseX / Y值,那么可能还有其他问题在这里发挥作用?

答案 1 :(得分:1)

所以发生的事情是当鼠标离开屏幕时,由于某种原因,它会在屏幕上看似随机的位置读取鼠标值。鼠标的新随机位置似乎总是与最后一个鼠标值相差60-70 +左右,所以我的解决方案就是这样:

stage.addEventListener(MouseEvent.MOUSE_MOVE,screenExit);
function screenExit(e:MouseEvent){

    if((mouseX > (lastX+50))||(mouseX < (lastX-50))){
        lastX =mouseX;
        lastY =mouseY;
    }
    else if((mouseY > (lastY+50))||(mouseY < (lastY-50))){
        lastX =mouseX;
        lastY =mouseY;
    }
    else{
        Character.x = mouseX;
        Character.y = mouseY;
    }
    lastX =mouseX;
    lastY =mouseY;

    trace(mouseX, mouseY);
}

每当鼠标移动时,它将检查鼠标的值,如果值完全不同(50)则假定鼠标离开屏幕(它是),并且在鼠标返回之前不更新字符位置到屏幕,它可以再次跟踪运动。

也有可能有人将鼠标移动速度超过50像素(在这种情况下,它会滞后于下一次移动)但是考虑到我正在快速前进的游戏不太可能。

相关问题