2013-07-12 2 views
1

Я не понимаю, почему проходит только один аргумент. Как мне кажется, я пропускаю 2, но вспышка не видит этого. Зачем? Я пытаюсь создать простой калькулятор, в котором вы помещаете первое число (num1) в текстовое поле, второе число (num2) в другое текстовое поле, нажмите кнопку добавления/вычитания/умножения/деления и получите ответ в третье текстовое поле. Здесь я получаюAS3 Неверное подсчет аргументов

ArgumentError: Ошибка # 1063: несоответствие счетчика аргументов на CalculatorLab/addme(). Ожидаемый 2, получил 1.

package { 

    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 

    public class CalculatorLab extends MovieClip { 


     public function CalculatorLab() { 
      // constructor code 
      var num1:Number = 0; 
      var num2:Number = 0; 

      addbtn.addEventListener(MouseEvent.CLICK, addme); 
      subtractbtn.addEventListener(MouseEvent.CLICK, subtractme); 
      multiplybtn.addEventListener(MouseEvent.CLICK, multiplyme); 
      dividebtn.addEventListener(MouseEvent.CLICK, divideme); 

     } 

     function addme(num1, num2):void { 
      num1txt.text = String(num1); 
      num2txt.text = String(num2); 
      var answer:Number = num1 + num2; 
      trace(answer); 
        answertxt.text = String(answer); 
      } 

     function subtractme(num1, num2):void { 
      num1txt.text = String(num1); 
      num2txt.text = String(num2); 
      var answer:Number = num1 - num2; 
      trace(answer); 
        answertxt.text = String(answer); 
      } 

     function multiplyme(num1, num2):void { 
      num1txt.text = String(num1); 
      num2txt.text = String(num2); 
      var answer:Number = num1 * num2; 
      trace(answer); 
        answertxt.text = String(answer); 
      } 

     function divideme(num1, num2):void { 
      num1txt.text = String(num1); 
      num2txt.text = String(num2); 
      var answer:Number = num1/num2; 
      trace(answer); 
        answertxt.text = String(answer); 
      } 


    } 

} 

ответ

1

Приемники событий передается один аргумент, который является объектом события (MouseEvent в вашем случае).

Так что ваш код должен выглядеть несколько иначе

function addme(event:MouseEvent):void { 
    var num1:Number = Number(num1txt.text); 
    var num2:Number = Number(num2txt.text); 
    var answer:Number = num1 + num2; 
    trace(answer); 
    answertxt.text = String(answer); 
} 

Все, что вам нужно сделать, это изменить другие обработчики событий 3 таким же образом. Вы также можете удалить локальные переменные num1 и num2 из кода конструктора, поскольку они нигде не используются.

+0

Это дает мне 4 синтаксических ошибки на Строках 19,20,21 и 22, которые говорят \t 1084: Синтаксическая ошибка: ожидая права перед двоеточием, где то, что у меня было раньше, не дало синтаксических ошибок и только ошибку выходного аргумента, которая говорит, что ожидает 2 аргумента и получил 1, после того, как я положил номер в первом поле, номер во втором поле и нажал кнопку + –

+0

Удивительный, спасибо :) –

+0

@JoshuaW: Удалось ли исправить ошибку синтаксиса? – Ma3x

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