如何将控件功能添加到由编译的影片剪辑构建的Flash影片中

时间:2010-10-15 11:32:53

标签: flash actionscript-2

我设计了很长的flash电影,这是一个广告。

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

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

它们播放,当剪辑到达结尾时,我使用了动作脚本root.gotoAndPlay(x),其中x是序列中下一个剪辑的幻灯片编号,因此我的时间轴如下所示:

timeline example

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

  • 播放
  • 暂停
  • 倒带
  • 快进

我该怎么做?我只能在网上找到允许控制功能的资源,其中所有内容都在同一时间轴上,而不是用于控制影片剪辑。

我对动作脚本的经验很少,但在其他语言(JS和PHP)方面经验丰富。

1 个答案:

答案 0 :(得分:1)

首先,为每个场景影片剪辑指定实例名称。使它成为可以解析的东西,例如“clip_1”,“clip_2”,“clip_3”等。

其次,在每个具有场景剪辑的帧上放置帧标签 - 命名与影片剪辑类似:“scene_1”,“scene_2”等。

现在,在主时间轴中创建一个新的actionscript图层,并确保其时间轴延伸到主时间轴的末尾。它会自动在第1帧中有一个空白的关键帧。

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

var currentClip:MovieClip = null;

我们可以通过多种方式跟踪当前剪辑 - 如果您没有提前计划实施,那么所有这些方法在某些时候都很乏味。我打算尝试一下我认为最容易实现的那个。

在动画片段所在的每个动作帧中,您将添加以下代码行:

currentClip = eval("clip_x");

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

现在,回到你创建的第二个动作层 - 我们将在这里处理rev,ff,play和pause动作。

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速率。

我认为Jump方法最容易实现:

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事件中。

祝你好运!

相关问题