gpt4 book ai didi

actionscript-3 - 在 AS3 中,将文本文件加载到字符串中

转载 作者:行者123 更新时间:2023-12-04 06:42:45 24 4
gpt4 key购买 nike

我一直在尝试将文本文件加载到字符串变量中。名为 text.txt 的文本文件包含 successful。这是代码:

public class Main extends Sprite
{
private var text:String = "text";
private var textLoader:URLLoader = new URLLoader();

public function Main() {
textLoader.addEventListener(Event.COMPLETE, onLoaded);
function onLoaded(e:Event):void {
trace("Before 1: " + text); //output: text
trace("Before 2: " + e.target.data); //output: successful
text = e.target.data;
trace("After 1: " + text); //output: successful - yay!!! it worked

}

textLoader.load(new URLRequest("text.txt"));

trace("After 2: " + text); //output: text - what??? nothing happened??? but it just worked

}

}

输出:

2 之后:文本
前一:文字
前 2:成功
1之后:成功

最佳答案

您正面临同步与异步问题

onLoaded 函数在 Event.COMPLETE 被分派(dispatch)时由 textLoader 异步调用,而不是 “After 2”textLoader.load 之后直接调用。

你必须记住的是 textLoader.load 是非阻塞的,这意味着 "After 2" 可能(你可以假设总是)在 之前执行onLoaded.

如果此时您仍然对答案感到困惑,我会说加载文件需要时间并且执行指令的时间可能会有所不同,但大部分时间比加载文件所需的时间要短得多(想象一下这个文件是 4go 大)。你无法预测会发生什么,也许磁盘已经很忙你可能需要等待!但是您可以利用这段宝贵的时间来做一些完全独立于文本文件的其他事情,这就是为什么它有时是由编程语言异步制作的(例如 php 同步加载文件)。

下一步


既然我已经解释过 "After 2" 并不真正存在,你必须使用 "After 1"作为一个入口点,但没有什么可以帮助你创建一个名为 afterLoad 的函数,你会这样调用它

public function Main() {
textLoader.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(e:Event):void {
trace("Before 1: " + text); //output: text
trace("Before 2: " + e.target.data); //output: successful
text = e.target.data;
afterLoad();
}

textLoader.load(new URLRequest("text.txt"));
}


}

private function afterLoad():void {
trace("After: " + text); // it should work now :)
}

关于actionscript-3 - 在 AS3 中,将文本文件加载到字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27722709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com