Actionscript 3 闪存AS3在加载之前不执行任何操作

Actionscript 3 闪存AS3在加载之前不执行任何操作,actionscript-3,text,load,Actionscript 3,Text,Load,我有一个程序,它需要加载一个文本文件,它可以这样做,但由于AS3上的所有内容都是多线程的,所以即使没有加载,它也会继续运行程序。比如,如果我创建一个加载文本的函数,然后让它返回加载的文本,它将始终返回“undefined”。我必须添加一个事件监听器,但处理文本返回的方式很难。有没有办法让程序只是等待,或者什么都不做,直到它被加载?听起来你想要的是同步加载数据,这样你就可以进行加载调用,并让它立即返回,就像这样: # (this actually is not actionscript) file

我有一个程序,它需要加载一个文本文件,它可以这样做,但由于AS3上的所有内容都是多线程的,所以即使没有加载,它也会继续运行程序。比如,如果我创建一个加载文本的函数,然后让它返回加载的文本,它将始终返回“undefined”。我必须添加一个事件监听器,但处理文本返回的方式很难。有没有办法让程序只是等待,或者什么都不做,直到它被加载?

听起来你想要的是同步加载数据,这样你就可以进行加载调用,并让它立即返回,就像这样:

# (this actually is not actionscript)
fileDataContents = open("file.txt", "r");
然后让fileDataContents立即可用

根据设计,这不是flash的工作方式

在闪存中加载外部数据不是多线程的,而是异步的。不执行同步加载的一个很好的原因是,它会在操作期间阻塞/锁定程序,从而可能导致较差的用户体验

例如,如果这是通过web加载文件:如果用户的internet连接刚刚中断/中断,或者在服务器上突然被移动/删除/修改,该怎么办?或者,如果文件大小适中,但用户处于拨号状态,该怎么办

在大多数情况下,这是您无法控制的,因此可能会导致flash在尝试加载时在用户的浏览器窗口中“永远”冻结,可能会导致整个浏览器随之关闭,最终导致糟糕的用户体验。通过阻止/锁定该循环中的程序,您将无法正确恢复或响应用户。

不,您不能

监听像现在这样的完整事件是等待并继续应用程序流的正确方法。我看不出这会变得多么尴尬-我建议更新你的问题,包括让你对活动系统感到不舒服的信息,这样我就可以从那里帮助你

也许您只是没有以与事件系统配合良好的方式构建代码。下面是如何设置一种非常干净、简单的方法来加载一些数据并在完成后启动应用程序

下面是document类,它可以纯粹用作加载文本数据的通道,文本数据将转发到实际应用程序类的新实例:

public class Main extends Sprite
{

    private var _application:Application;
    private var _loader:URLLoader;


    public function Main()
    {
        var fileUrl:URLRequest = new URLRequest("file.txt");

        _loader = new URLLoader(fileUrl);
        _loader.addEventListener(Event.COMPLETE, _textLoaded);
    }


    private function _textLoaded(e:Event):void
    {
        _loader.removeEventListener(Event.COMPLETE, _textLoaded);

        // Load the main Application with the required text data.
        _application = new Application( _loader.data );
    }

}
然后是您的<代码>应用程序>代码>,您可以考虑您的中心类:

public class Application
{

    public function Application(textData:String)
    {
        // Here we have access to the required text, and we can
        // begin preparing the main Application.
        trace(textData);
    }

}

请显示一点您的代码,目前还不清楚您尝试了什么。如果您能共享显示问题的整个源代码,那就太好了。只有加载是异步的,其他一切都是同步的,除非您使用FP11.4以后的
Worker
类。