我是编程新手,我在as3中创建了一个数学问题生成器 但它似乎并没有起作用 计时器不是问题,问题是(见第34行及以下)它没有跟踪"正确"当我点击" verificar"当输入文本有正确答案时按钮。请帮助,请再次考虑我是编程新手。接受任何帮助,谢谢。 :)
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")}
}
}
答案 0 :(得分:0)
您的代码中有一点错误,它会为您提供行为。
错误是在这个重复使用的指令中使用文本字段而不是文本时:
if (String(SimbMat) == "sign")
应该只是:SimbMat.text == "sign"
(当然我们不需要在这里进行投射,因为它已经是String
)。
另外,当一个简单的switch
可以完成工作时,尽量避免使用很多if
语句!
所以你可以这样做:
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。祝你好运!
希望可以提供帮助。