as3中输入文本问卷
Input text questionnaire in as3
我正在尝试创建一系列由输入文本回答的问题。用户可以选择跳过问题,当他们回答正确时,他们会前进到下一帧和新问题。代码很简单,但无论出于何种原因,当我删除验证输入的侦听器并调用一个新的侦听器时,什么也没有发生,也没有抛出任何错误。我不在电脑旁,但如果这没有意义,我会 post 代码。
我相信这一切都可以在单帧上完成,但超出了我的技能范围,因此进入下一帧。
已编辑:我已经计算出我们的数组片段并且现在将它放在一个框架上但是 displayQuestion++;无法正常工作....帮助!
var answerArray:Array=['uncle billy','six','178','hello4'];
var questionArray:Array=["what is the name of the guy?","how many people in the family?","how many planks","what do you call a grown boy4"];
var currentQuestion:int=0;
function displayQuestion():void{
question_tf.text=questionArray[currentQuestion];
}
checkAnswer_btn.addEventListener(MouseEvent.CLICK,checkAnswer);
function checkAnswer(e:MouseEvent):void{
if(answer_tf.text==answerArray[currentQuestion]){
displayQuestion++;
}
}
当问题回答正确时,听起来您正试图显示下一个问题。但是,您正在做的是尝试增加一个名为 displayQuestion
的变量,该变量不存在。我指的是您的这部分代码:
function checkAnswer(e:MouseEvent):void{
if(answer_tf.text==answerArray[currentQuestion]){
displayQuestion++;
}
}
但是您确实有一个名为 displayQuestion
的 函数 :如您的代码所示:
function displayQuestion():void{
question_tf.text=questionArray[currentQuestion];
}
此外,您声明删除了验证输入的侦听器,但在您显示的代码中没有对 removeEventListener
的函数调用。
尝试 运行 Flash CC 2014 中的代码,创建必要的 question_tf
和 answer_tf
文本字段实例以及 checkAnswer_btn
按钮实例后,我得到以下编译器错误:
Scene 1, Layer 'Layer 1', Frame 1, Line 14, Column 20 1107: Increment operand is invalid.
Scene 1, Layer 'Layer 1', Frame 1, Line 14, Column 5 1067: Implicit coercion of a value of type Function to an unrelated type Number.
您是否收到任何这些编译器错误?如果您没有遇到 displayQuestion
数据类型问题,我会感到惊讶。
根据您的描述,我只能假设您正在尝试执行以下操作:
var answerArray:Array=['uncle billy','six','178','hello4'];
var questionArray:Array=["what is the name of the guy?","how many people in the family?","how many planks","what do you call a grown boy4"];
var currentQuestion:int=0;
function displayQuestion():void{
clearAnswerField();
question_tf.text=questionArray[currentQuestion];
}
function clearAnswerField():void {
answer_tf.text = "";
}
checkAnswer_btn.addEventListener(MouseEvent.CLICK,checkAnswer);
function checkAnswer(e:MouseEvent):void{
if(answer_tf.text==answerArray[currentQuestion]){
currentQuestion++;
displayQuestion();
}
}
displayQuestion();
以上代码的作用是更正函数调用 displayQuestion
的问题,增加要显示的问题的变量,如果答案正确则清除答案字段。
然而,有一些非常重要的事情需要更正,而您的原始代码没有考虑到这些事情:
您的 checkAnswer
函数还应确保当索引 currentQuestion
的值增加到超过可用问题的数量时,永远不会使用该索引;否则,当您尝试访问 answerArray
的元素时,您将得到一个数组越界异常
在检查是否区分大小写的答案时,您的代码也应该小心。如果有人输入“Uncle billy”,您的代码目前不会接受答案;但是,您可能想要接受该答案。纠正该问题的安全方法是执行以下操作:
if(answer_tf.text.toLowerCase() == answerArray[currentQuestion].toLowerCase() ) {
currentQuestion++;
displayQuestion();
}
我为您创建的代码 运行 在 Flash CC 2014 中没有问题。
我正在尝试创建一系列由输入文本回答的问题。用户可以选择跳过问题,当他们回答正确时,他们会前进到下一帧和新问题。代码很简单,但无论出于何种原因,当我删除验证输入的侦听器并调用一个新的侦听器时,什么也没有发生,也没有抛出任何错误。我不在电脑旁,但如果这没有意义,我会 post 代码。
我相信这一切都可以在单帧上完成,但超出了我的技能范围,因此进入下一帧。
已编辑:我已经计算出我们的数组片段并且现在将它放在一个框架上但是 displayQuestion++;无法正常工作....帮助!
var answerArray:Array=['uncle billy','six','178','hello4'];
var questionArray:Array=["what is the name of the guy?","how many people in the family?","how many planks","what do you call a grown boy4"];
var currentQuestion:int=0;
function displayQuestion():void{
question_tf.text=questionArray[currentQuestion];
}
checkAnswer_btn.addEventListener(MouseEvent.CLICK,checkAnswer);
function checkAnswer(e:MouseEvent):void{
if(answer_tf.text==answerArray[currentQuestion]){
displayQuestion++;
}
}
当问题回答正确时,听起来您正试图显示下一个问题。但是,您正在做的是尝试增加一个名为 displayQuestion
的变量,该变量不存在。我指的是您的这部分代码:
function checkAnswer(e:MouseEvent):void{
if(answer_tf.text==answerArray[currentQuestion]){
displayQuestion++;
}
}
但是您确实有一个名为 displayQuestion
的 函数 :如您的代码所示:
function displayQuestion():void{
question_tf.text=questionArray[currentQuestion];
}
此外,您声明删除了验证输入的侦听器,但在您显示的代码中没有对 removeEventListener
的函数调用。
尝试 运行 Flash CC 2014 中的代码,创建必要的 question_tf
和 answer_tf
文本字段实例以及 checkAnswer_btn
按钮实例后,我得到以下编译器错误:
Scene 1, Layer 'Layer 1', Frame 1, Line 14, Column 20 1107: Increment operand is invalid.
Scene 1, Layer 'Layer 1', Frame 1, Line 14, Column 5 1067: Implicit coercion of a value of type Function to an unrelated type Number.
您是否收到任何这些编译器错误?如果您没有遇到 displayQuestion
数据类型问题,我会感到惊讶。
根据您的描述,我只能假设您正在尝试执行以下操作:
var answerArray:Array=['uncle billy','six','178','hello4'];
var questionArray:Array=["what is the name of the guy?","how many people in the family?","how many planks","what do you call a grown boy4"];
var currentQuestion:int=0;
function displayQuestion():void{
clearAnswerField();
question_tf.text=questionArray[currentQuestion];
}
function clearAnswerField():void {
answer_tf.text = "";
}
checkAnswer_btn.addEventListener(MouseEvent.CLICK,checkAnswer);
function checkAnswer(e:MouseEvent):void{
if(answer_tf.text==answerArray[currentQuestion]){
currentQuestion++;
displayQuestion();
}
}
displayQuestion();
以上代码的作用是更正函数调用 displayQuestion
的问题,增加要显示的问题的变量,如果答案正确则清除答案字段。
然而,有一些非常重要的事情需要更正,而您的原始代码没有考虑到这些事情:
您的
的元素时,您将得到一个数组越界异常checkAnswer
函数还应确保当索引currentQuestion
的值增加到超过可用问题的数量时,永远不会使用该索引;否则,当您尝试访问answerArray
在检查是否区分大小写的答案时,您的代码也应该小心。如果有人输入“Uncle billy”,您的代码目前不会接受答案;但是,您可能想要接受该答案。纠正该问题的安全方法是执行以下操作:
if(answer_tf.text.toLowerCase() == answerArray[currentQuestion].toLowerCase() ) { currentQuestion++; displayQuestion(); }
我为您创建的代码 运行 在 Flash CC 2014 中没有问题。