当我向左或向右移动鼠标时如何更改帧(动作脚本)

Posted

技术标签:

【中文标题】当我向左或向右移动鼠标时如何更改帧(动作脚本)【英文标题】:How to change frames when i move my mouse left or right (actionscript) 【发布时间】:2016-02-13 01:16:51 【问题描述】:

我使用一条鱼作为鼠标光标,但是当我在舞台上移动它时,它只面向一个方向。我想要它做的是在我向左或向右移动时改变方向。

【问题讨论】:

【参考方案1】:

mouseX 位置存储在变量中。当鼠标移动时,将新的mouseX 位置与您存储的变量进行比较(您可以使用ENTER_FRAMEMOUSE_MOVE 事件来做到这一点)。如果新位置大于前一个位置,则将scaleX 设置为1,如果新位置小于前一个位置,则将scaleX 设置为-1(反之亦然)。 更新存储的值并重复。

【讨论】:

我怎样才能使上面的代码使用这个代码 sn-p " /* 自定义鼠标光标 用指定的符号实例替换默认鼠标光标。 */ stage.addChild(Gfish); Gfish.mouseEnabled = false; Gfish.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor_3); function fl_CustomMouseCursor_3(event:Event) Gfish.x = stage.mouseX; Gfish.y = stage.mouseY; Mouse.hide(); //恢复默认鼠标指针,取消注释以下行: //Gfish.removeEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor_3); //stage.removeChild(Gfish); //Mouse.show(); "【参考方案2】:

这应该允许您控制鱼影片剪辑的时间线:

它通过监听鼠标位置的变化来工作,在检测到它执行此操作的速度后,根据鼠标的新方向向前或向后移动所需的 movieclip 的时间线。

取自以下线程:https://forums.adobe.com/thread/1450102?tstart=0

var mc:MovieClip = MovieClip(this);  // <- The timeline you want to control with mouse position
var maxScrollSpeed:int=100;  // max fps for mc above
var m:Number;
var b:Number;
var prevFPS:int;

paramF(0,-maxScrollSpeed,stage.stageWidth,maxScrollSpeed);
this.addEventListener(MouseEvent.MOUSE_MOVE,scrollF);

function scrollF(e:Event):void

    var fps:int = Math.round(m*mouseX+b);
    if(prevFPS&&prevFPS!=fps)
    
        if(fps!=0)
        
            if(fps>0)
            
                playF(mc,mc.currentFrame,mc.totalFrames,fps);
             
            else 
            
                playF(mc,mc.currentFrame,1,-fps);
            
         
        else 
        
            stopF(mc);
        
    
    prevFPS=fps;


function playF(mc:MovieClip, m:int, n:int, fps:int):void 

    var playFFF2:Function = function(mc:MovieClip):void 
    
        if (mc.m<mc.n) 
        
            mc.nextFrame();
         
        else 
        
            mc.prevFrame();
        
        if (mc.currentFrame == mc.n) 
        
            clearInterval(mc.int);
        
        //updateAfterEvent();
    ;
    mc.m = m;
    mc.n = n;
    mc.fps = fps;
    mc.gotoAndStop(mc.m);
    clearInterval(mc.int);
    mc.int = setInterval(playFFF2, 1000/mc.fps, mc);

function stopF(mc:MovieClip):void 

    clearInterval(mc.int);


function paramF(x1:Number,y1:Number,x2:Number,y2:Number):void

    m=(y1-y2)/(x1-x2);
    b=y1-m*x1;

【讨论】:

以上是关于当我向左或向右移动鼠标时如何更改帧(动作脚本)的主要内容,如果未能解决你的问题,请参考以下文章

A3C 策略只选择单个动作,无论输入状态如何

如何在 Android 中检测向左或向右滑动?

是否可以使用具有两列的表视图创建 UI?

如何通过手势更改报价[重复]

检测用户何时向左或向右滑动以在 WKWebView 上前后移动

jQuery 将固定或绝对定位的元素向左或向右移动