2015-09-28 47 views
-1

我是新手編程,我在as3中做了一個數學問題生成器 但它似乎並沒有工作 定時器不是問題,問題是(請參見line 34及以下),當輸入文本具有正確答案時,如果單擊「驗證者」按鈕,它不會跟蹤「正確」。請幫助,並請再次考慮我是編程新手。任何幫助被接受,謝謝。 :)驗證按鈕不能正常工作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

你的代碼中有一個小錯誤,它會給你你的行爲。使用的,而不是它在這個屢使用的指令文本的文本字段時

的錯誤是:

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

} 

您可以從Adobe這個鏈接有關Learning ActionScript 3上看看。祝你好運 !

希望能有所幫助。