代码之家  ›  专栏  ›  技术社区  ›  Mazatec

如何将控制功能添加到由编译的电影剪辑生成的flash电影

  •  1
  • Mazatec  · 技术社区  · 16 年前

    我设计了一部很长的flash电影,是做广告用的。

    电影是在几个flash文件中设计的,每个文件都被合并成一个电影剪辑,然后所有的电影剪辑都被移动到主文档中。

    每个电影剪辑都在一张幻灯片上。

    当剪辑结束时,我使用了动作脚本 root.gotoAndPlay(x) 哪里 x

    timeline example

    我需要添加一个带有四个按钮的控制功能:

    • 玩
    • 暂停
    • 快进

    我对actionscript没有什么经验,但是我对其他语言(JS和PHP)有经验。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Brian Driscoll    16 年前

    其次,在每个有场景剪辑的帧上贴上帧标签-与电影剪辑的名称类似:“场景1”、“场景2”等。

    我们将创建一个变量来保存对当前播放的剪辑的引用:

    var currentClip:MovieClip = null;
    

    我们有很多方法可以跟踪当前剪辑-如果您没有提前计划实现,所有这些方法在某个时刻都是乏味的。我要试试我认为最容易做的 你 实施。

    currentClip = eval("clip_x");
    

    您需要在每个帧的“clip_x”中更改x的值,以匹配帧中的剪辑数。

    function Play() : Void {
       if(currentClip!=null && currentClip!=undefined) {
            currentClip.play();
       }
    }
    
    function Pause() : Void {
       if(currentClip!=null && currentClip!=undefined) {
            currentClip.stop();
       }
    }
    

    好的,我们已经讨论了播放和暂停。如何处理FF和REV将取决于您希望用户如何与这些按钮交互。通常有两种方法:“跳跃”和“扫描”。每次按下按钮时,“跳跃”方法将播放头向前/向后移动预定数量的帧。“扫描”方法将播放头向前/向后移动X帧/秒,只要按住按钮,其中X是电影的fps速率。

    我认为跳转方法是最容易实现的:

    var JUMP_RATE=30;//这是每次按下ff或rev按钮时要“跳转”的帧数

    function FF() : Void {
         if(currentClip!=null && currentClip!=undefined) {
               if(currentClip._currentFrame + JUMP_RATE < currentClip._totalFrames)
                     currentClip.gotoAndPlay(currentClip._currentFrame + JUMP_RATE);
               else
                     currentClip.gotoAndStop(currentClip._totalFrames);
         }
    }
    
    function REV() : Void {
         if(currentClip!=null && currentClip!=undefined) {
               if(currentClip._currentFrame - JUMP_RATE > 0)
                     currentClip.gotoAndPlay(currentClip._currentFrame - JUMP_RATE);
               else
                     currentClip.gotoAndPlay(0);
         }
    } 
    

    现在您只需创建按钮并将函数调用添加到其onPress或onRelease事件中。

    推荐文章