当我向左或向右移动鼠标时如何更改帧(actionscript)
How to change frames when i move my mouse left or right (actionscript)
我正在使用一条鱼作为鼠标光标,但是当我在我的舞台上移动它时,它只面向一个方向。我想让它做的是在我向左或向右移动时改变方向。
将mouseX
位置存储在一个变量中。当鼠标移动时,将新的 mouseX
位置与您存储的变量进行比较(您可以使用 ENTER_FRAME
或 MOUSE_MOVE
事件来执行此操作)。如果新位置大于先前位置,则将 scaleX
设置为 1,如果新位置小于先前位置,则将 scaleX
设置为 -1(反之亦然)。
更新存储值并重复。
这应该允许您控制鱼影片剪辑的时间轴:
它的工作原理是监听鼠标位置的变化,在检测到鼠标移动的速度后,根据鼠标的新方向向前或向后移动所需 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;
}
我正在使用一条鱼作为鼠标光标,但是当我在我的舞台上移动它时,它只面向一个方向。我想让它做的是在我向左或向右移动时改变方向。
将mouseX
位置存储在一个变量中。当鼠标移动时,将新的 mouseX
位置与您存储的变量进行比较(您可以使用 ENTER_FRAME
或 MOUSE_MOVE
事件来执行此操作)。如果新位置大于先前位置,则将 scaleX
设置为 1,如果新位置小于先前位置,则将 scaleX
设置为 -1(反之亦然)。
更新存储值并重复。
这应该允许您控制鱼影片剪辑的时间轴:
它的工作原理是监听鼠标位置的变化,在检测到鼠标移动的速度后,根据鼠标的新方向向前或向后移动所需 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;
}