2015-09-28 3 views
-1

Я новичок в программировании, и я создал генератор математического вопроса в as3 Но он, похоже, не работает Таймер не проблема, проблема в том, что проблема (см. Строку 34 и ниже), что он не отслеживает «правильное», когда я нажимаю кнопку «verificar», когда вмененный текст имеет правильный ответ. пожалуйста, помогите, и, пожалуйста, снова подумайте, что я новичок в программировании. Любая помощь принимается, спасибо. :)Кнопка подтверждения не работает AS3

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

У вас есть небольшая ошибка в коде, которая дает вам поведение, которое у вас есть.

Ошибка при использовании текстового поля вместо его текста в этом repeatly используется инструкция:

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 !'); 
     }  
    */ 

} 

Вы посмотрите на эту ссылку о Learning ActionScript 3 от Adobe может. Удачи !

Надеюсь, что это поможет.

Смежные вопросы