Flash CS5:AS3 - 删除swf文件的结尾?

时间:2011-04-10 21:11:35

标签: actionscript-3 flash flash-cs5

我在flash中制作了一个视频,但是它已经被破坏了,因此fla不再可用了。而不是重新制作视频,我想只是剪掉我发布的.swf的结尾,然后可能只是在结束后立即播放第二个.swf(使用重播按钮和指向特定网站的链接)

我的问题是:我有可能在最后减少.swf大约3秒钟吗?

1 个答案:

答案 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();
     }
}

代码是我的头脑,但至少,如果它还没有按原样运行,你应该对这个概念有足够的理解,使其工作或按你认为合适的方式实现它。