从自定义类到Flash时间轴的gotoAndPlay()

时间:2009-10-31 09:45:43

标签: actionscript-3

没有太冗长....我在上周通过构建一个小型Flash网站学习AS3。导航菜单构建为自定义类,而不是Flash文件本身的关键帧。我现在发现自己只需要以这种方式发出命令来控制主Flash文件的时间线......

pages.gotoAndPlay(的FrameLabel);

来自自定义类。

帮助。

5 个答案:

答案 0 :(得分:2)

所有。 这个令人不快的问题让我很头疼。 最佳解决方案是将MainTimeline声明为DisplayContainerObject,并将其设置为任何CustomClass中静态MovieClip变量的值。

在MainTimeline的AS框架中的某处写下:

import flash.display.MovieClip;

//Reference to the MainTimeline as MovieClip
CustomClassName.mainTimeline = this as MovieClip;

类代码应该如下所示

package 
{

import flash.display.MovieClip;

    public class CustomClassName extends MovieClip
    {

        public static var mainTimeline:MovieClip;
        public function CustomClassName()
        {
            // constructor code
        }

    }

}

答案 1 :(得分:1)

MovieClip(this.parent)['pages'].gotoAndPlay();

或者您可以将影片剪辑传递给类,如果您使用的是基本文档类,则会删除父级内容。

或者,您可以在页面中为页面MC提供链接类名称,并将其动态添加到显示列表(阶段),然后播放

答案 2 :(得分:0)

这很简单,您需要获得对主时间轴的引用,并准确地调用您提供的示例。

如果您创建的自定义类只是被添加到某个主时间轴,您可以通过对象的“父”属性获得对主时间轴的引用。

var theMainTimeline:MovieClip = this.parent as MovieClip;
var theDesiredFrameLabel:String = "WHICHEVER FRAME LABEL YOU WANT TO GO TO GOES HERE";
theMainTimeline.gotoAndStop(theDesiredFrameLabel);

答案 3 :(得分:0)

JStriedl的例子很棒,但如果你需要获得主时间轴,你可以通过DisplayObject的root属性以完全相同的方式做到这一点。

答案 4 :(得分:0)

您还可以将课程附加到主舞台&时间线。在此类中引用您的导航类。然后导航类可以发送主阶段类捕获的事件......主阶段类可以采取像gotoAndStop这样的动作...

使用父级被认为是不好的做法,因为如果您在其他地方使用该类,则父级可能不是主时间轴。