as3.0鼠标向左向右移动检测

as3.0鼠标向左向右移动检测,第1张

两种方法:

1最简单的方法:

在侦听MouseEventMOUSE_DOWN的函数下使用mcstartDrag(),然后在侦听MouseEventMOUSE_UP的函数下使用mcstopDrag();

缺点:每次只能拖拽一个对象,偶尔会有误判导致鼠标释放了还是跟随鼠标

2常用的方法

侦听MouseEventMOUSE_DOWN、MouseEventMOUSE_UP、MouseEventMOUSE_MOVE

设一个Point变量记录之前的点击点或经过的点,在MouseEventMOUSE_MOVE的侦听函数中实时改变位置然后将这个变量设为当前的坐标

第2个方法可以避免第一个方法中的问题,而且可以一次拖拽多个物体

假设元件是mc,代码如下:

第一种方法:

//最好用stage侦听,避免误判的情况出现

stageaddEventListener(MouseEventMOUSE_DOWN,dragHandle);

stageaddEventListener(MouseEventMOUSE_UP,dragHandle);

//函数

function dragHandle(e:MouseEvent):void

{

    //确保点击的是mc

    if (etarget==mc)

    {

        if (etype==MouseEventMOUSE_DOWN)

        {

            mcstartDrag();

        }

        if (etype==MouseEventMOUSE_UP)

        {

            mcstopDrag();

        }

    }

}

第二种方法:

//最好用stage侦听,避免误判的情况出现

stageaddEventListener(MouseEventMOUSE_DOWN,dragHandle);

stageaddEventListener(MouseEventMOUSE_UP,dragHandle);

//声明一个储存位置的点,这个点可以保证移动鼠标后元件相对于鼠标的位置不变

var position:Point = new Point();

//指示当前是否按下了鼠标

var mouseDown:Boolean = false;

//函数

function dragHandle(e:MouseEvent):void

{

    //确保点击的是mc,用contains函数更准确一些

    if (etargetcontains(mc))

    {

        if (etype==MouseEventMOUSE_DOWN)

        {

            positionx = mcmouseX;

            positionx = mcmouseY;

            mouseDown = true;

        }

        if (etype==MouseEventMOUSE_UP)

        {

            mouseDown = false;

        }

        if (etype==MouseEventMOUSE_MOVE && mouseDown)

        {

            mcx = mcparentmouseX - positionx;

            mcy = mcparentmouseY - positiony;                     

        }        

    }

}

希望能帮到你!

您好,您可以在 AS3 中使用 stageaddEventListener(MouseEventMOUSE_MOVE, onMouseMove); 来监听鼠标的移动事件,然后在 onMouseMove 函数中处理鼠标的移动。举个例子,你可以将鼠标的坐标与舞台的中心进行比较,如果鼠标移出了舞台,就让鼠标瞬间移动到舞台中央。

stageaddEventListener(MouseEventMOUSE_MOVE, onMouseMove);

function onMouseMove(e:MouseEvent):void {

var stageCenter:Point = new Point(stagestageWidth/2, stagestageHeight/2);

if (!contains(etarget as DisplayObject)) {

Mousecursor = MouseCursorAUTO;

Mousehide();

stagemouseX = stageCenterx;

stagemouseY = stageCentery;

}

}

//设被移动的物体为jumpmc,楼主有n个mc可能会被移动。以下as写在时间轴上

var jumpmc:Sprite;

mc1addEventListener(MouseEventCLICK,jump);

mc2addEventListener(MouseEventCLICK,jump);

mc3addEventListener(MouseEventCLICK,jump);

mcnaddEventListener(MouseEventCLICK,jump);

function jump(e:MouseEvent):void{

jumpmc=etarget;

}

thisaddEventListener(MouseEventCLICK,jump2);

function jump2(e:MouseEvent):void

{

if (jumpmc){

jumpmcx=mouseX;

jumpmcy=mouseY;

jumpmc=null;

}

}

//以上只是简单的测试,直接输入的,可能有大小写或者标点符号有错误,我没有进行过测试。另外,你可以使用for循环给想要移动的物体增加监听。可以根据类似于childAt(),当然啦,每个输一次监听这样的笨办法也是可以的。

//此外,你要判断你鼠标是否点到了物体上,(为了避免重合,这个你可以进行判断),以及其他的。这只是一个基本的模块。 另外,还需要其他注意的地方,很有可能你使用不成功,这是由于相对坐标与鼠标坐标不同的原因。这个自己想办法解决吧。

给你一个思路,的大小必须固定例如高1600,宽1200。

然后舞台大小也固定好尺寸例如高700,宽1200。

获取鼠标坐标,把鼠标乘于(高度减去舞台高度700),然后确定移动的多少。

pic_mcy =  -  mouseY 9 / 7;

具体代码如下,叫做pic_mc,如果不明白可以看看附件。

addEventListener(EventENTER_FRAME, fl_EnterFrameHandler);

function fl_EnterFrameHandler(event:Event):void

{

pic_mcy =  -  mouseY (1600-700) / 700;

}

//以下代码是让鼠标点击播放下一张的。

pic_mcaddEventListener(MouseEventCLICK, fl_MouseClickHandler);

function fl_MouseClickHandler(event:MouseEvent):void

{

pic_mcplay();

}

就算鼠标不动,对象自身移入了鼠标范围,会自动执行 MouseEventROLL_OVER;同理对象自身移出了鼠标范围也会执行MouseEventROLL_OUT,

没必要使用EventENTER_FRAME吧?

数组保存路径点数据,然后关联x轴或y轴的数值读取,物体对应坐标显示就可以了

数据可以写一个onEnterFrame+trace

读出,自己整理成数组数据就可以了

如果是类似模拟旋钮之类的规则弧线运动,比如音量调节按钮,直接用三角函数计算角度值,半径算出坐标即可

以上就是关于as3.0鼠标向左向右移动检测全部的内容,包括:as3.0鼠标向左向右移动检测、问:撰写AS3的3D函数——有没有办法控制鼠标不离开舞台啊、flash as3.0 怎么实现鼠标点击后,一物体跳跃到被点击的物体处,能写个简单的as参考一下吗一直不明白等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9533355.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存