当我从它鼠标输出时,我正试图让一个影片剪辑反向播放(它在mouse_over上播放)。
我的动作如下:
mc.stop();
mc.addEventListener(MouseEvent.MOUSE_OVER,mover);
mc.addEventListener(MouseEvent.MOUSE_OUT,mout);
function mover(e:MouseEvent):void
{
mc.play();
}
function mout(e:MouseEvent):void
{
//Play in reverse
}
我将如何实现这一目标?
由于
答案 0 :(得分:15)
最好的方法是使用ENTER_FRAME事件侦听器。基本上这就是你想要做的事情
function mover(e:MouseEvent):void {
stopPlayReverse();
mc.play();
}
function mout(e:MouseEvent):void {
this.addEventListener(Event.ENTER_FRAME, playReverse, false, 0, true);
}
function playReverse(e:Event):void {
if (mc.currentFrame == 1) {
stopPlayReverse();
} else {
mc.prevFrame();
}
}
function stopPlayReverse():void {
if (this.hasEventListener(Event.ENTER_FRAME)) {
this.removeEventListener(Event.ENTER_FRAME, playReverse);
}
}
这将反向播放您的MovieClip,直到它到达第1帧,然后它将停止。
答案 1 :(得分:5)
如果动作允许,您可以使用补间(例如,如果您想要更改alpha,位置或比例)。在MouseOut上,您可以为Tween调用.yoyo(),它将反向播放。
这样的事情:
var tween:Tween;
mc.addEventListener(MouseEvent.MOUSE_OVER,mover);
mc.addEventListener(MouseEvent.MOUSE_OUT,mout);
function mover(e:MouseEvent):void
{
tween = new Tween(obj, "alpha", None.easeNone, 1, 0, 1, true);
}
function mout(e:MouseEvent):void
{
tween.yoyo();
}
答案 2 :(得分:4)
TweenLite.to(mc, 2, {frame:1});
答案 3 :(得分:1)
如果您的补间并不是那么严重,那么您可以反过来制作一组全新的帧,并从该关键帧中播放它。
这是穷人的反向补间。
答案 4 :(得分:0)
通过使用一个作为触发器和Event.ENTER_FRAME
的布尔值,您可以执行以下操作来反转帧:
//Boolean and Event.ENTER_FRAME
var reversing:Boolean = false;
AddEventListener(Event.ENTER_FRAME, reverse);
function reverse(e:Event){
if(reversing)
{
//mc is displaying previous frame every frame
mc.prevFrame();
//until the currentFrame is 1
if(mc.currentFrame == 1)
reversing = false;
}
}
您的//Play in reverse
会设置reversing = true;
答案 5 :(得分:0)
您可以传递影片剪辑对象以找到要反转的正确对象。这种方式可以帮助您与您想要的孩子一起使用。你可以用它来获得它:
fMoveBack(this.getChildByName(" my_clip&#34));
function fMoveBack(my_clip:MovieClip):void {
this.addEventListener(Event.ENTER_FRAME, playReverse(my_clip));
}
function playReverse(mc:MovieClip):Function {
return function playReverse(e:Event):void {
if (mc.currentFrame == 1) {
stopPlayReverse(mc);
} else {
mc.prevFrame();
}
};
}
function stopPlayReverse(mc:MovieClip):void {
if (this.hasEventListener(Event.ENTER_FRAME)) {
this.removeEventListener(Event.ENTER_FRAME, playReverse);
}
}