验证按钮无效AS3

时间:2015-09-28 01:50:41

标签: actionscript-3 flash

我是编程新手,我在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")}
    }
}

1 个答案:

答案 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。祝你好运!

希望可以提供帮助。