ActionScript 3: каждая строка из текстового файла как элемент массива

Итак, моя проблема в том, что трассировка внутри функции действительно отслеживает первый элемент массива, но трассировка снаружи, если функция этого не делает. Я объявляю переменную массива вне функции, но данные не сохраняются в переменную массива.

var oppgaveLoader:URLLoader = new URLLoader();

oppgaveLoader.load(new URLRequest("oppgaver.txt"));
var oppgaveNr = 0
//store line of text on an array called oppgaver
var oppgaver:Array = []
var oppg:Array = new Array()
oppgaveLoader.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(e:Event){
    oppgaver = e.target.data.split(/\n/)
    trace(oppgaver[0]) //This one traces the frist item in the array
}
trace(oppgaver[0])//This one does not trace the first one in the array

Кто-нибудь знает, почему и / или как это исправить, если это возможно? Файл «oppgaver.txt» находится в том же каталоге, что и мой файл .fla.

Файл "oppgaver.txt" устроен следующим образом (текст на норвежском языке, но каждая строка будет элементом массива):

Hvor gjelder forbudsskilt hvis ikke annet er oppgitt?
Hvordan foretar du best mulig bremsing og unnastyring?
Hvordan bør du normalt plassere bilen på en vanlig 2-felst vei?

person Andreas Mikalsen    schedule 25.01.2017    source источник


Ответы (1)


Это проблема синхронности.

последний trace происходит сразу после того, как вы настроили свои массивы, но эти массивы все еще пусты.

только когда вызывается функция onLoaded, asynchronously функцией URLLoader, они заполняются, и вы можете отслеживать их значения.

этот прослушиватель событий в основном позволяет вам реагировать на событие, которое произойдет в будущем в какой-то момент.

person alebianco    schedule 25.01.2017
comment
Большое спасибо, мне удалось это сделать после того, как вы сообщили мне об этом - person Andreas Mikalsen; 25.01.2017