验证按钮不起作用 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 !');
        }       
    */

}

您可以查看来自 Adob​​e 的关于 Learning ActionScript 3 的 link。祝你好运!

希望能帮到你。