时间轴实例不在第一帧上

时间:2012-04-26 18:19:07

标签: actionscript-3 flash-cs5

已经有一段时间了,因为我必须编写Actionscript,真的需要与时间轴集成(在这种情况下,控制必须按特定顺序发生的一系列帧)和我我想弄清楚要做什么。

在前几帧中,我有一个按钮“next_1”。

在第10帧,我需要另一个按钮“next_2”。我真的非常需要这个按钮不在第一帧(我可能只是让它看不见,但这会创建一个我不想要的可点击区域。)

问题是,我没有把任何“frame_1”放在我的Document类中呈现为null。

这有什么解决方案吗?如果可能的话,我宁愿不必在时间轴上编写我的脚本(从长远来看,将它保存在文档类中似乎更容易)......

2 个答案:

答案 0 :(得分:1)

时间轴上的项目是即时创建的,因此如果播放头未到达第10帧,则不会创建next_2。

最简单的文档级解决方案:

  1. 创建一个框架标签数组,如[“label1”,“label2”]
  2. 创建sectionIndex var并将其设置为0
  3. 在自己的图层上创建下一个按钮,以便始终显示。
  4. 单击下一个按钮时,增加sectionIndex,然后gotoAndPlay(myLabels [sectionIndex])

答案 1 :(得分:0)

好的,直接取消了“真实世界Flash游戏开发”:

/**************************************************
* FRAME LABELS *
**************************************************/
private function enumerateFrameLabels():void {
   for each (var label:FrameLabel in currentLabels) {
       addFrameScript(label.frame-1, dispatchFrameEvent);
   }
}

private function dispatchFrameEvent():void {
   dispatchEvent(new Event(currentLabel, true));
}

这将在时间轴上的每个帧标签处调度一个事件。

然后您可以为每个帧添加事件侦听器:

addEventListener("name_of_my_framelabel", frameHandler);
addEventListener("another_framelabel", frameHandler);

并编写一个switch语句,以便在按钮实际显示在时间轴上时为其添加事件侦听器。

private function frameHandler(e:Event):void {
            switch(e.type) {
                case 'screen_2':
                    stop();
                    next_2.addEventListener(MouseEvent.CLICK, click2, false, 0, true)
                break;
            }
        }