2016-05-01 5 views
1

привет я очень новичок в Adobe Flash и делаю проект для своего вычислительного класса, я делаю игру, были отображены 2 случайных сгенерированных номера, и пользователь должен введите значение, набрав 10 баллов, если ответ правильный. У меня, однако, есть проблемы с тем, чтобы заставить текстовое поле ввода работать, чтобы дать мне 10 баллов, если ответ правильный, а сейчас я получаю очки только в том случае, если 2 сгенерированных числа имеют сумму 0. Было бы очень полезно помочь, многие Благодарю. Я поставлю код нижеflash AS6- Как проверить правильный ответ в поле ввода

public class Main extends MovieClip { 
    var Num1:int ; 
    var Num2:int ; 
    var Answer:int ; 
    var Score:int=0; 
    var UserInput; 



    public function Main() 
    { 
     // constructor code 
     gotoAndStop(1); 
     Start.addEventListener(MouseEvent.CLICK, StartFunct); 

    } 

    function StartFunct(e:Event) 
     { 
      gotoAndStop(2); 
      button.addEventListener(MouseEvent.CLICK,clickhandler); 
      button.addEventListener(MouseEvent.CLICK,clickhandler2); 
      button.addEventListener(MouseEvent.CLICK,checkFunction); 
     } 

    function checkFunction(event:MouseEvent):void 
    { 
     Answer= Num1*Num2; 
     if(UserInput == Answer){ 
      Score=Score+10 

     } 
     else Score=Score 

    } 


    function clickhandler(event:MouseEvent):void 
    { 
     Num1 = Math.floor(Math.random()*10); 
     Num2 = Math.floor(Math.random()*10); 

     num1Box.text = String(Num1); 
     num2Box.text = String(Num2); 
     UserInput = ""; 

    } 
    function clickhandler2(event:MouseEvent):void 
    { 
     Score = Score; 

     ScoreBox.text = String(Score); 
+1

- это 'UserInput' of ** String ** type ?? Почему бы просто не сказать компьютеру, что вы имеете в виду, 'var UserInput: String =" ";' ... В любом случае, я думаю, что ваша проблема - это ** Если ** инструкция в 'checkFunction', она должна быть:' if (int (UserInput) == Answer) 'this говорит компьютеру рассматривать эту текстовую строку как целое число (то есть: casting as integer) –

ответ

2

Мне кажется, что это вопрос с заказом. В то же время у вас есть три отдельных события кликов. Идеальный способ сделать это - сделать одну функцию click-handler и инкапсулировать три другие функции в это, точно в том порядке, в котором вы хотите.

Вместо function StartFunct(e:Event) { gotoAndStop(2); button.addEventListener(MouseEvent.CLICK,clickhandler); button.addEventListener(MouseEvent.CLICK,clickhandler2); button.addEventListener(MouseEvent.CLICK,checkFunction); }

Попробуйте делать это больше похоже на эту

 function StartFunct(e:Event) 
     { 
      gotoAndStop(2); 
      button.addEventListener(MouseEvent.CLICK,clickHandler); 
     } 

function clickHandler(evnt:Event){ 
function1(); //generate the numbers 
function2(); evaluate the numbers and adjust the score 
function3(); //adjust score text box 
} 

` Обратите внимание, что выполнение этого потребуется вам удалить параметр для функции действия. Вы также можете просто попытаться переупорядочить способ, с помощью которого вы объявляете свой первый onClick eventListeners.