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

时间:2015-11-11 20:24:42

标签: actionscript-3 flash actionscript adobe

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这应该允许你控制鱼动画片段的时间轴:

通过侦听鼠标位置的变化来工作,在检测到它的速度后,根据鼠标的新方向向前或向后移动所需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;
}