【问题标题】:Flash CS5: AS3 - remove ending of swf file?Flash CS5:AS3 - 删除 swf 文件的结尾?
【发布时间】:2011-04-10 21:11:35
【问题描述】:

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

我的问题是:我是否有可能在最后将 .swf 削减约 3 秒?

【问题讨论】:

    标签: actionscript-3 flash flash-cs5


    【解决方案1】:

    假设这是一个基于帧的动画或 swf,当您加载 swf 时,您可以使用 MovieClip(mySwf).currentScene.numFrames 获取总帧数。因此,您减少 3 秒的方法是根据当前帧速率计算 3 秒有多少帧,然后在 ENTER_FRAME 回调中检查 currentFrame 并在检测到它等于(totalFrames 少 3 秒帧数)。代码如下:

    * 注意:代码已编辑,见 cmets *

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

    代码不在我的脑海中,但至少,如果它还没有按原样工作,你应该对这个概念有足够的理解,以使其工作或按照你认为合适的方式实施它。

    【讨论】:

    • 所以基本上我会制作另一个播放我的 swf 的影片剪辑,但在我想要的时候将其剪掉?我不是flash和AS3的专业人士,所以请原谅我的无知
    • 没问题,我们都从某个地方开始。无论如何,是的,这几乎是使用另一个 SWF 加载旧 SWF 的想法,使用 Loader 对象加载 SWF 并执行我在上面所做的操作。我将编辑答案以包含此代码。
    • 答案已更新。您可能必须手动进行导入(例如 LoaderInfo 等),但该代码应该可以正常工作。还可以查看这个网站,它包含免费的视频教程 + 用于 Flash 的项目文件:gotoandlearn.com
    • 完全没问题。请注意,尽管我只是再次编辑了代码,哈哈,我忘记了将加载的 SWF 添加到舞台,否则您将永远看不到它。 :)
    • 我用我拥有的 swf 文件的 url 添加了代码,它给了我这个错误:第 1 帧,第 28 行 1120:访问未定义的属性 reduceTotalFrames。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多