我在flash中制作了一个视频,但是它已经被破坏了,因此fla不再可用了。而不是重新制作视频,我想只是剪掉我发布的.swf的结尾,然后可能只是在结束后立即播放第二个.swf(使用重播按钮和指向特定网站的链接)
我的问题是:我有可能在最后减少.swf大约3秒钟吗?
答案 0 :(得分:0)
假设这是一个基于帧的动画或swf,当你加载swf时,你可以使用MovieClip(mySwf).currentScene.numFrames获得帧的总数。因此,你将减少3秒钟的方式是根据当前帧速率确定3秒钟的帧数,然后在ENTER_FRAME回调中检查currentFrame并在检测到它时等于(totalFrames减去3秒)的框架)。代码如下:
* 注意:已编辑代码,请参阅注释 *
var mySwf:MovieClip;
var reducedTotalFrames:int;
var clipLoader:Loader = new Loader();
clipLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
clipLoader.load(new URLRequest("http://www.mysite.com/mySwf.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);
mySwf.gotoAndPlay(1);
}
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();
}
}
代码是我的头脑,但至少,如果它还没有按原样运行,你应该对这个概念有足够的理解,使其工作或按你认为合适的方式实现它。