![](/img/trans.png)
[英]AS3 How to access a movieclip on the main timeline from within a movieclip?
[英]AS3 Flash calling main timeline from within a movieclip within a movie clip
我在这个网站上查看了类似的问题,但找不到解决方案,所以这是我的问题:
我有一个保存 function 可以保存一些数据。这个 function 在另一个电影剪辑中的一个电影剪辑中。 保存后,我想转到主时间线的 gotoAndStop(1) 而不是当前嵌套的...有人可以帮忙吗?
下面是代码:
function save()
{
var oldname:String = so.data.username;
so.data.username = oldname + tf.text + " " + nf.text + "\n";
tf.text = "";
nf.text = ""; // resets textfields
so.flush(); // writes changes to disk
trace("Saved");
gotoAndStop(1); <<----this must goto frame 1 of the main time line??
}
这是AS3。 在 AS2 中,我曾经能够调用 _root。 或_parent。 这可以正常工作,但现在它会引发编译器错误。 Stage.gotoAndStop(1); 也不起作用...
感谢任何帮助,在此先感谢 Luben
您可以使用root
访问最顶层的DisplayObject
。 因为DisplayObject
没有gotoAndStop()
方法,所以尝试root.gotoAndStop()
将导致:
1061:通过 static 类型 flash.display:DisplayObject 的引用调用可能未定义的方法 gotoAndStop。
但是,您可以将root
类型转换为MovieClip
1 ,这将授予对它的访问权限:
MovieClip(root).gotoAndStop(1); // or:
(root as MovieClip).gotoAndStop(1);
对MovieClip
进行类型转换还允许您在主时间轴上访问用户定义的属性和函数 - 这是因为 MovieClip 是dynamic
的,它放弃了编译时对允许您在 object 上访问哪些属性和方法的限制。
1除非您有一个继承Sprite
而不是MovieClip
的文档 class 的情况。
我不会在 Flash 时间轴上进行大量编码(如果您的应用程序甚至具有中等复杂性,我建议您开始研究通过文档根目录使用外部 class 定义); 但以下建议仍然适用。
在 AS3 中,在显示列表上调度的事件可以将其bubbles
属性设置为 true,这将启用事件冒泡。 通过启用事件冒泡,您可以在显示列表上收听更高的内容, 以下文章通过您可以玩的演示很好地解释了它。
在您的应用程序中,假设您有两个“块”操作,即save
function 定义和main
function 定义:
主要的
// Add an event listener, when we hear a 'SaveEvent' we will call
// the onSaveEvent function.
addEventListener("SaveEvent", onSaveEvent);
// This function is called when we hear a 'SaveEvent'.
function onSaveEvent(event : Event) : void {
trace("Main heard event: " + event.type);
// We can now instruct our Main Timeline.
gotoAndStop(1);
}
节省
// Perform your save operation as before...
so.flush(); // writes changes to disk
trace("Saved");
// Now dispatch an Event, make sure we set it to bubble.
var bubbles : Boolean = true;
dispatchEvent(new Event("SaveEvent", bubbles));
//因此您可以 go 到场景 1 的第一帧
MovieClip(root).gotoAndStop(1, "Scene 1");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.