поэтому я получаю сообщение об ошибке в строке 342, котораяWeird error AS3. Срок не определен
myTextField.text = object[curPart]["text"]
это говорит о том, что термин не определен. Трассировка curPart дает мне нулевое значение, хотя в коде, который выполняется буквально для этого момента, curPart является частью3. Ничего не меняет. Это то, что работает перед ним, функция эффекта записи типа.
private function addCharackter():void
{
if (!textFinished)
{
// add the charackter to the Textfield
myTextField.text = object[curPart]["text"].substring(0,counter)
counter++
trace(curPart) // prints "part3"
// if you reached the end of the String stop Timer
if (counter == object[curPart]["text"].length+1 && !textFinished)
{
textFinished = true;
trace("Text finished:",textFinished)
clearInterval(sInt)
counter = 0;
if (object[curPart]["text"].indexOf("What do you do?") >= 0)
{
trace("H!!!")
choosing = true
createOptions();
}
if (object[curPart]["text"].indexOf("What do you do?") >= 0)
{
dead = true;
}
}
}
Еще одна странная вещь, что ошибка не произойдет, если я закончу пишущего эффект типа, нажав пространство, которое сделано здесь:
public function onEnter(key:KeyboardEvent):void
{
if (key.charCode == 32)
{
if (dead && textFinished && !choosing)
{
curPart = object[curPart]["lastPart"]
textFinished = false
dead = false;
myTextField.text = ""
counter = 0;
sInt = setInterval(addCharackter, textSpeed)
}
if (!textFinished && !choosing && !dead)
{
trace(textFinished)
trace("finishing")
trace(curPart)
myTextField.text = object[curPart]["text"]
if (object[curPart]["text"].indexOf("What do you do?") >= 0)
{
trace("H!")
choosing = true
createOptions();
}
if (object[curPart]["text"].indexOf("You have died") >= 0)
{
dead = true;
}
clearInterval(sInt)
textFinished = true;
}
else if (textFinished && !choosing && !dead)
{
trace("Hi!!!!")
curPart = object[curPart]["nextPart"]
myTextField.text = ""
counter = 0;
sInt = setInterval(addCharackter, textSpeed)
textFinished = false
}
}
}
Я просмотрел мой код в течение нескольких часов. текст внутри part3 и part3 существуют, поскольку это работает, если я пропущу процесс ввода, нажав пробел. (это также не происходит, если я должен был пропустить процесс ввода текста перед part3.)
Редактировать: Еще одна вещь, которую я только что понял, строка 342 никогда не должна запускаться, потому что textFinished должен быть равен true (что это за минуты до этого, но когда я нажимаю пробел, это волшебство не является. Я не изменяю его на ложное где-либо, кроме тех частей, которые не работают при возникновении ошибки)
FWIW, возможно, вы можете упорядочить свой код, просто сохранив ссылку на currentObject (currentObject = object [curPart]), а затем просто ссылаясь на это всюду. И сохраняя его текст один раз, а не перечитывая полную ссылку каждый раз, когда вы хотите что-то проверить по тексту. Наконец, «объект» - ужасное имя переменной. Это может противоречить зарезервированному слову. –
Я знаю, что объект ужасен. Я назвал это для тестирования и никогда не менял его. – Badfitz66