Flash - 播放影片剪辑反向?
我想获得一个影片剪辑,当我从它mouse_out(它在mouse_over上播放)反向播放。Flash - 播放影片剪辑反向?
我的动作如下:
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
}
我将如何实现这一目标?
感谢
最好的方法是使用一个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);
}
}
这将直到它击中架1反向播放影片剪辑,那么它就会停止的。
如果运动允许,则可以使用补间(例如,如果要更改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();
}
如果吐温是不是所有的严重,你可以从字面上做一个全新的集反向帧,并从关键帧只是玩。
这是穷人的逆向补间。
非常真实,以及它是如何进行了很长时间的。 – sberry 2010-01-12 15:13:37
TweenLite.to(mc, 2, {frame:1});
通过使用其作品作为触发和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;
你可以做到这一点传递影片剪辑对象找到正确的对象进行反转。这种方式可以帮助你和你想要的孩子一起使用。你可以得到它:
fMoveBack(this.getChildByName(“my_clip”));
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);
}
}
非常感谢您的工作! – Probocop 2010-01-12 15:08:56
没问题。如上所示,您可以尝试使用内置的Tween类或其他补间库。关于ENTER_FRAME方法最好的事情是,无论帧速率如何,您的动画都会向后或向前花费相同的时间量。 – sberry 2010-01-12 15:12:57