繁体   English   中英

AS3 Flash 从影片剪辑中的影片剪辑中调用主时间线

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM