我是编程新手,我在as3中做了一个数学问题生成器但这似乎不起作用计时器不是问题所在,问题在于(参见第34行和下面)当我点击"verify"按钮时,当输入文本有正确的答案时,它没有跟踪"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
)。
另外,当一个简单的 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学习ActionScript 3的链接。祝你好运!
希望能有所帮助。