Actionscript - 循环直到鼠标悬停然后转到第x帧

时间:2009-12-21 14:51:46

标签: flash actionscript-3 actionscript-2

我一直试图让它工作一段时间。我有25帧我想循环,但在鼠标悬停时我希望它跳到第26帧并继续。有什么建议吗?

动作脚本2或3很好......

1 个答案:

答案 0 :(得分:1)

如果您想完全避免使用时间轴,可以使用ENTER_FRAME处理程序检查每个帧上的 currentFrame ,也可以使用addFrameScript()方法:

var isIdle : Boolean = true;

var loopIfIdle: Function = function() : void
{
  if (isIdle)
    mc.gotoAndPlay(1);
};

mc.addFrameScript(24, loopIfIdle);
mc.addEventListener(MouseEvent.MOUSE_OVER, handleMouseOver);


// The mouse handler:
function handleMouseOver(ev : MouseEvent) : void
{
  isIdle = false;
}

基本上,这里发生的是声明一个布尔变量,它将用于指示Flash阶段是否已与(悬停)进行交互。使用闭包(在其周围范围内继承变量的方法),我们创建了 loopIfIdle 函数,该函数可以访问此标志。

addFrameScript()或多或少与在Flash CS3 / CS4时间轴中的帧上添加代码完全相同。因此,每次播放头通过第25帧时都会执行 loopIfIdle 函数。但是现在,因为我们使用了一个闭包,我们可以检查 isIdle 标志的状态来自框架脚本。

MOUSE_OVER事件处理程序会将 isIdle 设置为false,以指示该阶段已悬停。这意味着下次调用 loopIfIdle 时,它将不会循环(即返回到第1帧),从而达到您所追求的效果。

更简单的解决方案是在MOUSE_OVER处理程序中简单地使用gotoAndPlay(26),并忽略整个帧脚本和isIdle标志方法。但是,这不能保证从循环到第26帧的平滑过渡(想象一下,如果鼠标进入第1帧的阶段,然后直接跳到26)。根据您的要求,这可能仍然是一个不错的选择。 / p>