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));
}
答案 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视频执行此操作,但您需要为此权限付费。