indexOf не найти переменную в массиве в ActionScript 3 - PullRequest
0 голосов
/ 01 мая 2018

Этот скрипт без проблем загружает данные из текстового файла в myArrayofLines

function onLoaded(e:Event):void {
    var myArrayOfLines:Array = e.target.data.split(/\n/);
    for(var t:Object in myArrayOfLines)
  trace(t + " : " + myArrayOfLines[t]);

    trace(myArrayOfLines.indexOf("ace"));

    trace(myArrayOfLines[2]);
       }

При трассировке myArrayOfLines [2] правильно отображается «ace»

Но использование indexOf ("туз") дает -1, когда должно отображаться 2

Помощь

Вот код от Organis, но индекс все еще дает -1

var aLoader:URLLoader = new URLLoader;

aLoader.addEventListener(Event.COMPLETE, onLoaded);
aLoader.load(new URLRequest("3letterwords.txt"));

function onLoaded(e:Event):void
{
    var aLines:Array = e.target.data.split(/\n/);

    for (var i:int = 0; i < aLines.length; i++)
    {
        trace(i + " : " + aLines[i]);
    }

   trace(aLines.indexOf("ace"));

    trace(aLines[2]);
       }

1 Ответ

0 голосов
/ 01 мая 2018

Поскольку загрузка данных является асинхронной операцией, то onLoaded обработчик событий выполняется после вашего , если блок. В основном, порядок выполнения следующий:

// 1
var myTextLoader:URLLoader = new URLLoader();

// 2
myTextLoader.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(e:Event):void
{
    // 5
    var myArrayOfLines:Array = e.target.data.split(/\n/);
    for(var t:Object in myArrayOfLines)
    trace(t + " : " + myArrayOfLines[t]);
}

// 3
myTextLoader.load(new URLRequest("3letterwords.txt"));

// 4
if ( myArrayOfLines.indexOf( word ) > -1 )
{
    // Success{

    clabelword.text = String(word) + String("good");    

}

Вот почему в пункте 4 у сценария нет данных ... пока .

Единственный надежный способ проверить загруженные данные - поместить блок if в обработчик событий или в любой код, который выполняется после обработчика событий.

var aLoader:URLLoader = new URLLoader;

aLoader.addEventListener(Event.COMPLETE, onLoaded);
aLoader.load(new URLRequest("3letterwords.txt"));

function onLoaded(e:Event):void
{
    var aLines:Array = e.target.data.split(/[\r\t\s]*\n[\r\t\s\n]*/);

    for (var i:int = 0; i < aLines.length; i++)
    {
        trace(i + " : <" + aLines[i] + ">");
    }

    if (aLines.indexOf(word) > -1)
    {
        clabelword.text = word + "good";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...