我需要在开始时使用swf加载,但我不想播放视频的最后3秒。
有人可以帮助我使用基本上我的swf玩“x”秒的代码吗?
到目前为止我所拥有的内容..目前它已设置为播放swf,但从中减去“x”秒但由于某种原因它似乎无法正常工作
var mySwf:MovieClip;
var reducedTotalFrames:int;
var clipLoader:Loader = new Loader();
clipLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
clipLoader.load(new URLRequest("schoolintro.swf"));
function loadComplete(e:Event):void
{
mySwf = LoaderInfo(e.currentTarget).content as MovieClip;
var totalFrameCount:int = mySwf.currentScene.numFrames;
var secondsToSubtract:int = 3;
var threeSecondFrameCount:int = (stage.frameRate * secondsToSubtract);
reducedTotalFrames = totalFrameCount - threeSecondFrameCount;
stage.addEventListener(Event.ENTER_FRAME, onRender);
stage.addChild(mySwf);
}
function onRender(e:Event):void
{
if(mySwf != null && mySwf.currentFrame >= reducedTotalFrames){
//This is the end of the SWF with 3 seconds trimmed off. Here we can stop play
stage.removeEventListener(Event.ENTER_FRAME, onRender);
mySwf.stop();
//doSomethingElse();
}
}
答案 0 :(得分:0)
我认为您只需要从
更改此行var threeSecondFrameCount:int = (stage.frameRate * secondsToSubtract);
到
var threeSecondFrameCount:int = (stage.frameRate / secondsToSubtract);
不确定这是否是你想要的。
答案 1 :(得分:0)
尝试一些基本的调试,比如在onRender里面的代码中放置trace语句以确保它被调用,以确保mySwf引用正常工作(例如,跟踪mySwf.currentScene.numFrames,如果它是0,你知道你没有正确引用你的swf或swf不是基于帧的)。如果SWF不是基于帧的,那么由于加载的SWF内部进行的所有动画/动作都是基于代码的,所以你将会遇到控制甚至做任何事情的实际问题。