indexOf 在 actionscript 3 中找不到数组上的变量
indexOf not finding the variable on the array in actionscript 3
此脚本完美地将数据从文本文件加载到 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("ace") 给出 -1 ,而它应该显示 2
帮忙?
这是 Organis 的代码,但 indexOf 仍然给出 -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]);
}
因为加载数据是一个异步操作,因此 onLoaded 事件处理程序被执行 after 你的 if 堵塞。基本上,执行顺序如下:
// 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 块放入事件处理程序或任何在 after[=24] 后执行的代码中=] 事件处理程序。
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";
}
}
此脚本完美地将数据从文本文件加载到 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("ace") 给出 -1 ,而它应该显示 2
帮忙?
这是 Organis 的代码,但 indexOf 仍然给出 -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]);
}
因为加载数据是一个异步操作,因此 onLoaded 事件处理程序被执行 after 你的 if 堵塞。基本上,执行顺序如下:
// 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 块放入事件处理程序或任何在 after[=24] 后执行的代码中=] 事件处理程序。
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";
}
}