почему моя переменная не увеличивается в AS3 - PullRequest
0 голосов
/ 19 февраля 2012

Когда пользователь нажимает пробел, я пытаюсь взять одну строку из серии строк, помеченных как c1-c9, разбить ее на массив, отобразить этот массив, а затем увеличить переменную белья в конце так, чтобы при следующем нажатии клавиши пробела прослеживалась следующая строка в серии и так далее, и так далее. Вот соответствующий раздел скрипта (строки и переменная 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);
    }
}

Однако каждый раз, когда я нажимаю клавишу пробела, я просто повторяю следы начальной строки и значения белья, не увеличивая их. Я думаю, что это может иметь какое-то отношение к «этому» перед скобкой в ​​этой строке

var displayarray:Array = this["c" + linenumber].split(" ");

, который я нашел в примере кода на каком-то веб-сайте и совсем не понимаю, но я получаю ошибки компилятора, если я пытаюсь соединить "c" и номер строки без "this" там. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 30 мая 2012

Множество способов ошибиться во 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;
0 голосов
/ 21 февраля 2012

Я заменил ваш 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 является ассоциативным массивом, тогда трассировка не может показать пары ключ-значение.но это не объясняет, почему ваше белье не увеличивается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...