AS3 Flash从影片剪辑中的动画片段中调用主时间轴

时间:2011-08-16 06:36:33

标签: actionscript-3 navigation timeline

我在这个网站上看过类似的问题而无法找到解决方案,所以这是我的问题:

我有一个保存功能,可以保存一些数据。此功能位于另一个影片剪辑中的1个影片剪辑中。保存后我想要主时间线的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

3 个答案:

答案 0 :(得分:5)

您可以使用root访问最顶层的DisplayObject。由于DisplayObject没有gotoAndStop()方法,因此尝试root.gotoAndStop()会导致:

  

1061:通过静态类型flash.display:DisplayObject的引用调用可能未定义的方法gotoAndStop。

然而,您可以typecast rootMovieClip 1 ,这将授予对它的访问权限:

MovieClip(root).gotoAndStop(1); // or:
(root as MovieClip).gotoAndStop(1);

MovieClip进行类型转换还允许您访问主时间轴上的用户定义属性和函数 - 这是因为MovieClip是dynamic,它会删除您所使用的属性和方法的编译时限制允许访问对象。


1 除非您的文档类继承Sprite而非MovieClip

答案 1 :(得分:1)

我没有在Flash时间线上做很多编码(我建议你开始考虑使用文档根目录中的外部类定义,如果你的应用程序甚至是中等复杂度的话);但以下建议应该仍然适用。

在AS3中,在显示列表上调度的事件可以将其bubbles属性设置为true,这将启用事件冒泡。通过启用事件冒泡,您可以在显示列表中监听更高的位置,the following article可以通过您可以使用的演示来解释它。

在您的应用程序中,我们假设您有两个“块”操作,save函数定义和main函数定义:

主要

// 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));

答案 2 :(得分:0)

//因此,您可以转到场景1的第一帧

MovieClip(root).gotoAndStop(1, "Scene 1");