Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 动作脚本3鼠标悬停播放电影,鼠标悬停播放反向电影_Actionscript 3_Mouse_Mouseevent - Fatal编程技术网

Actionscript 3 动作脚本3鼠标悬停播放电影,鼠标悬停播放反向电影

Actionscript 3 动作脚本3鼠标悬停播放电影,鼠标悬停播放反向电影,actionscript-3,mouse,mouseevent,Actionscript 3,Mouse,Mouseevent,我正在尝试制作一些带有鼠标悬停动画的闪动按钮,该动画在鼠标悬停时反向播放。现在,我的三个电影剪辑实例中的一个正在使用它 我使用e.currentTarget.play()而不是每个电影剪辑都有一个函数,但是如何对playReverse函数进行同样的操作呢?我尝试将e.currentTarget.prevFrame()替换为mc1.prevFrame(),但没有成功。我的代码如下: mc1.addEventListener(MouseEvent.MOUSE_OVER,mover); mc2.add

我正在尝试制作一些带有鼠标悬停动画的闪动按钮,该动画在鼠标悬停时反向播放。现在,我的三个电影剪辑实例中的一个正在使用它

我使用e.currentTarget.play()而不是每个电影剪辑都有一个函数,但是如何对playReverse函数进行同样的操作呢?我尝试将e.currentTarget.prevFrame()替换为mc1.prevFrame(),但没有成功。我的代码如下:

mc1.addEventListener(MouseEvent.MOUSE_OVER,mover);
mc2.addEventListener(MouseEvent.MOUSE_OVER,mover);
mc3.addEventListener(MouseEvent.MOUSE_OVER,mover);
mc1.addEventListener(MouseEvent.MOUSE_OUT,mout);
mc2.addEventListener(MouseEvent.MOUSE_OUT,mout);
mc3.addEventListener(MouseEvent.MOUSE_OUT,mout);

function mover(e:MouseEvent):void {
    stopPlayReverse();
    e.currentTarget.play();
}

function mout(e:MouseEvent):void {
    this.addEventListener(Event.ENTER_FRAME, playReverse, false, 0, true);
}

function playReverse(e:Event):void {
    if (mc1.currentFrame == 1) {
        stopPlayReverse();
    } else {
        mc1.prevFrame();
    }
}

function stopPlayReverse():void {
    if (this.hasEventListener(Event.ENTER_FRAME)) {
        this.removeEventListener(Event.ENTER_FRAME, playReverse);
    }
}

你知道我如何解决这个问题吗?

你的函数playReverse只使用mc1,它如何与其他电影剪辑一起工作

如果您选择这样做,您可以跟踪当前的
MovieClip
反向播放。 如果您希望在将一个剪辑传递到另一个剪辑时始终完成反向播放,则必须添加更多逻辑

var currentMovieClip:MovieClip=null;

function mout(e:MouseEvent):void {
    var mc:MovieClip = e.currentTarget as MovieClip; 
    if (mc !== null) {
     currentMovieClip = mc;
     this.addEventListener(Event.ENTER_FRAME, playReverse, false, 0, true);
    }
}

function playReverse(e:Event):void {
    if (currentMovieClip==null) {
       return;
    }

    if (currentMovieClip.currentFrame == 1) {
        stopPlayReverse();
    } else {
        currentMovieClip.prevFrame();
    }
}
另一种方式意味着你可以让每个剪辑以相反的方式完成播放

function mover(e:MouseEvent):void {
    stopPlayReverse(e.currentTarget as MovieClip);
    e.currentTarget.play();
}

function mout(e:MouseEvent):void {
    var mc:MovieClip = e.currentTarget as MovieClip; 
    if (mc !== null) {
     mc.addEventListener(Event.ENTER_FRAME, playReverse, false, 0, true);
    }
}

function playReverse(e:Event):void {
    var mc:MovieClip = e.currentTarget as MovieClip; 

    if (mc.currentFrame == 1) {
        stopPlayReverse(mc);
    } else {
        mc.prevFrame();
    }
}

function stopPlayReverse(mc:MovieClip):void {
  if ((mc!==null) && mc.hasEventListener(Event.ENTER_FRAME)) {
    mc.removeEventListener(Event.ENTER_FRAME, playReverse);
  }
}