没有太冗长....我在上周通过构建一个小型Flash网站学习AS3。导航菜单构建为自定义类,而不是Flash文件本身的关键帧。我现在发现自己只需要以这种方式发出命令来控制主Flash文件的时间线......
pages.gotoAndPlay(的FrameLabel);
来自自定义类。
帮助。
答案 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这样的动作...
使用父级被认为是不好的做法,因为如果您在其他地方使用该类,则父级可能不是主时间轴。