验证按钮不起作用 AS3
Verification button not working AS3
我是编程新手,我用 as3 制作了一个数学问题生成器
但它似乎没有用
计时器不是问题,问题是(参见第 34 行及以下)当输入文本具有正确答案时,当我单击 "verificar" 按钮时它不会跟踪 "correcto"。请帮忙,请再次考虑我是编程新手。接受任何帮助,谢谢。 :)
import flash.utils.Timer;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
stop()
var reloj:Timer = new Timer(1000,60);
startButton.addEventListener(MouseEvent.CLICK, startTimer);
reloj.addEventListener(TimerEvent.TIMER, moveHand);
reloj.addEventListener(TimerEvent.TIMER_COMPLETE, endTimer);
function startTimer(e:MouseEvent):void
{
reloj.start();
startButton.visible = false;
}
function moveHand(e:TimerEvent):void
{
segundero.rotation = segundero.rotation + 6
}
function endTimer(e:TimerEvent):void
{
trace("Se agotó el tiempo");
gotoAndPlay (1, "1");
}
nuevo.addEventListener(MouseEvent.CLICK, generarPregunta);
function generarPregunta(MouseEvent):void
{
var random1:Number = Math.floor(Math.random()*25)
var random2:Number = Math.floor(Math.random()*25)
var array:Array = new Array ("+","-","*","/")
var randomIndex:int = Math.floor (Math.random()*4)
SimbMat.text = array [ randomIndex ]
numI.text = random1 + ""
numD.text = random2 + ""
}
verificar.addEventListener(MouseEvent.CLICK, verificarRespuesta);
function verificarRespuesta(MouseEvent):void
{
if (String(SimbMat) == "+")
{
if (Number(numI.text) + Number(numD.text) == Number(imput.text))
{trace("correcto")}
else
{trace("incorrecto")}
}
else if (String(SimbMat) == "-")
{
if (Number(numI.text) - Number(numD.text) == Number(imput.text))
{trace("correcto")}
else
{trace("incorrecto")}
}
else if (String(SimbMat) == "*")
{
if (Number(numI.text) * Number(numD.text) == Number(imput.text))
{trace("correcto")}
else
{trace("incorrecto")}
}
else if (String(SimbMat) == "/")
{
if (Number(numI.text) / Number(numD.text) == Number(imput.text))
{trace("correcto")}
else
{trace("incorrecto")}
}
}
您的代码中有一个小错误,导致了您所拥有的行为。
在这个重复使用的指令中使用文本字段而不是其文本时出现错误:
if (String(SimbMat) == "sign")
应该只是:SimbMat.text == "sign"
(当然我们不需要在这里转换,因为它已经是 String
)。
此外,尽量避免使用许多 if
语句,因为一个简单的 switch
就可以完成这项工作!
所以你可以这样做:
function verificarRespuesta(MouseEvent):void
{
var sign:String = SimbMat.text;
var correcto:Boolean = false;
var num_I:Number = Number(numI.text),
num_D:Number = Number(numD.text),
imput:Number = Number(imput.text);
// use a switch instead of many "if"
switch (sign){
case '+' :
correcto = num_I + num_D == imput;
break;
case '-' :
correcto = num_I - num_D == imput;
break;
case '*' :
correcto = num_I * num_D == imput;
break;
case '/' :
correcto = num_I / num_D == imput;
break;
}
trace(correcto ? 'Correcto !' : 'Incorrecto !');
// you can also write it like this :
/*
if(correcto){
trace('Correcto !');
} else {
trace('Incorrecto !');
}
*/
}
您可以查看来自 Adobe 的关于 Learning ActionScript 3 的 link。祝你好运!
希望能帮到你。
我是编程新手,我用 as3 制作了一个数学问题生成器 但它似乎没有用 计时器不是问题,问题是(参见第 34 行及以下)当输入文本具有正确答案时,当我单击 "verificar" 按钮时它不会跟踪 "correcto"。请帮忙,请再次考虑我是编程新手。接受任何帮助,谢谢。 :)
import flash.utils.Timer;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
stop()
var reloj:Timer = new Timer(1000,60);
startButton.addEventListener(MouseEvent.CLICK, startTimer);
reloj.addEventListener(TimerEvent.TIMER, moveHand);
reloj.addEventListener(TimerEvent.TIMER_COMPLETE, endTimer);
function startTimer(e:MouseEvent):void
{
reloj.start();
startButton.visible = false;
}
function moveHand(e:TimerEvent):void
{
segundero.rotation = segundero.rotation + 6
}
function endTimer(e:TimerEvent):void
{
trace("Se agotó el tiempo");
gotoAndPlay (1, "1");
}
nuevo.addEventListener(MouseEvent.CLICK, generarPregunta);
function generarPregunta(MouseEvent):void
{
var random1:Number = Math.floor(Math.random()*25)
var random2:Number = Math.floor(Math.random()*25)
var array:Array = new Array ("+","-","*","/")
var randomIndex:int = Math.floor (Math.random()*4)
SimbMat.text = array [ randomIndex ]
numI.text = random1 + ""
numD.text = random2 + ""
}
verificar.addEventListener(MouseEvent.CLICK, verificarRespuesta);
function verificarRespuesta(MouseEvent):void
{
if (String(SimbMat) == "+")
{
if (Number(numI.text) + Number(numD.text) == Number(imput.text))
{trace("correcto")}
else
{trace("incorrecto")}
}
else if (String(SimbMat) == "-")
{
if (Number(numI.text) - Number(numD.text) == Number(imput.text))
{trace("correcto")}
else
{trace("incorrecto")}
}
else if (String(SimbMat) == "*")
{
if (Number(numI.text) * Number(numD.text) == Number(imput.text))
{trace("correcto")}
else
{trace("incorrecto")}
}
else if (String(SimbMat) == "/")
{
if (Number(numI.text) / Number(numD.text) == Number(imput.text))
{trace("correcto")}
else
{trace("incorrecto")}
}
}
您的代码中有一个小错误,导致了您所拥有的行为。
在这个重复使用的指令中使用文本字段而不是其文本时出现错误:
if (String(SimbMat) == "sign")
应该只是:SimbMat.text == "sign"
(当然我们不需要在这里转换,因为它已经是 String
)。
此外,尽量避免使用许多 if
语句,因为一个简单的 switch
就可以完成这项工作!
所以你可以这样做:
function verificarRespuesta(MouseEvent):void
{
var sign:String = SimbMat.text;
var correcto:Boolean = false;
var num_I:Number = Number(numI.text),
num_D:Number = Number(numD.text),
imput:Number = Number(imput.text);
// use a switch instead of many "if"
switch (sign){
case '+' :
correcto = num_I + num_D == imput;
break;
case '-' :
correcto = num_I - num_D == imput;
break;
case '*' :
correcto = num_I * num_D == imput;
break;
case '/' :
correcto = num_I / num_D == imput;
break;
}
trace(correcto ? 'Correcto !' : 'Incorrecto !');
// you can also write it like this :
/*
if(correcto){
trace('Correcto !');
} else {
trace('Incorrecto !');
}
*/
}
您可以查看来自 Adobe 的关于 Learning ActionScript 3 的 link。祝你好运!
希望能帮到你。