当用户按下空格键时,我试图从标记为c1-c9的一系列字符串中取一个字符串,将其分解为数组,显示该数组,然后在结束时增加linenumber变量函数,以便下次空格键被按下时,系列中的下一个字符串被跟踪,依此类推。这是脚本的相关部分(字符串和linenumber变量已在前面声明过)
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void {
if (e.keyCode == Keyboard.SPACE) {
trace("okay, the key was pressed, at least")
var displayarray:Array = this["c" + linenumber].split(" ");
trace(displayarray);
linenumber++;
trace(linenumber);
}
}
每次按空格键时,我只会重复初始字符串和亚麻值的痕迹,而不会增加任何值。我认为它可能与此行中括号之前的“this”有关
var displayarray:Array = this["c" + linenumber].split(" ");
我在某个网站上的代码示例中发现并且根本不理解,但如果我尝试加入“c”并且没有“this”的行号,则会出现编译器错误。我做错了什么?
答案 0 :(得分:0)
我将this
替换为tempArray
并运行它。
var linenumber:Number = 1;
var tempArray:Array = [];
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
for(var i=0; i<=9; i++)
{
tempArray["c"+i]="C "+i;
}
function myKeyDown(e:KeyboardEvent):void {
if (e.keyCode == Keyboard.SPACE) {
trace("okay, the key was pressed, at least")
var displayarray:Array = tempArray["c" + linenumber].split(" ");
trace(displayarray);
linenumber++;
trace(linenumber);
}
}
这完美无缺。
您的代码未运行的解释之一是 如果在您的代码中,displayarray是一个关联数组,则trace不能显示键值对。但这并不能解释为什么你的亚麻布不会增加。
答案 1 :(得分:0)
许多方法在Flash中出错,就像代码或生活中的许多其他地方一样,LOL
尝试使用以下自包含的完整as3代码。它适用于我的机器。从一个干净的开始as3空白项目。也许你可以根据你的用例进行调整..
import flash.events.KeyboardEvent;
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void{
//trace(e.keyCode);
if(e.keyCode === Keyboard.SPACE){
trace(lineNum);
var dArr:Array = this['c' + lineNum].split(' ');
trace(dArr);
lineNum++;
}
}
var c1 = 'a b c d e';
var c2 = 'q w e r t y';
var c3 = 'y u i o p';
var lineNum = 1;