Flash中的时间缩放电影

时间:2010-01-20 18:47:53

标签: flash actionscript-3 animation

After Effects中的时间缩放电影很简单,但是如何 我会在Flash中这样做吗?方程式或动作脚本将不胜感激。

实施例

我的电影是60秒。我想在30秒内播放整部电影。我想在120秒内播放整部电影。如何使用actionScript 3.0重新缩放我的电影。我的电影可能会有相同的长度和帧速率,如果这有所不同。

实施例

预加载器具有受百分比和比例影响的元素。我想对影片剪辑这样做,但是有一个定义的总数。

离。

progressbar_mc.scaleX =已加载/总计;

//Grapefruits example revised
//No errors at runtime, nothing happens?
//instance of "dude"
var _time_scale:Number = .25; 
var _frames_elapsed:int = 0; 
var dude:MovieClip; 

function handleEnterFrame(e:Event):void { 
_frames_elapsed++; 
dude.gotoAndStop(Math.round(dude.totalFrames 1 _frames_elapsed 2 _time_scale)); 
}

2 个答案:

答案 0 :(得分:2)

这是相当简单的,这段代码将以四分之一速度播放MovieClip:

package {
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite {

        private var _time_scale:Number = .25;
        private var _frames_elapsed:int = 0;
        private var _clip:MovieClip;

        public function Main():void {
            _clip = new SomeClip;
            addEventListener(Event.ENTER_FRAME, handleEnterFrame);
        }

        private function handleEnterFrame(e:Event):void {
            _frames_elapsed++;
            // we multiply the "real" time with our timescale to get the scaled time
            // we also need to make sure we give an integer as a parameter, so we use Math.round() to round the value off
            _clip.gotoAndStop(Math.round(_clip.totalFrames * _frames_elapsed * _time_scale));
        }

    }

}

这种方法有一个主要的警告,帧之间不会有插值。这意味着延伸超过10秒的10帧动画将实际上是1fps。如果加速,它也会跳过帧,但我认为这不是一个问题。

答案 1 :(得分:0)

如果没有像grapefrukt这样的黑客给你,我不认为你在AS3中所描述的是可能的。有一个third-party app可以为您观看的Flash视频执行此操作,但您需要为此权限付费。