Actionscript 3 AS3参数计数不匹配

Actionscript 3 AS3参数计数不匹配,actionscript-3,arguments,Actionscript 3,Arguments,我不明白为什么只有一个论点通过了。在我看来,我已经过了2级,但flash没有这么看。为什么?我正在尝试构建一个简单的计算器,将第一个数字(num1)放在一个文本字段中,第二个数字(num2)放在另一个文本字段中,单击一个加/减/乘/除按钮,并将答案显示在第三个文本字段中。这是我得到的 ArgumentError:错误#1063:CalculatorLab/addme()上的参数计数不匹配。期望2,得到1 package { import flash.display.MovieClip

我不明白为什么只有一个论点通过了。在我看来,我已经过了2级,但flash没有这么看。为什么?我正在尝试构建一个简单的计算器,将第一个数字(num1)放在一个文本字段中,第二个数字(num2)放在另一个文本字段中,单击一个加/减/乘/除按钮,并将答案显示在第三个文本字段中。这是我得到的

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);
            }


    }

}

事件监听器被传递一个参数,该参数是事件对象(本例中为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,因为它们不在任何地方使用。

事件侦听器被传递一个参数,即事件对象(在您的例子中是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,因为它们没有在任何地方使用。

这在第19、20、21和22行中给出了4个语法错误,它们是1084:语法错误:在冒号之前应为rightparen,而我之前的代码没有给出语法错误,只有一个输出参数错误,表示应为2个参数得到1,在我把一个数字放在第一个框中之后,在第二个框中放一个数字,然后点击+按钮。这是一个额外的问题。为什么我不能将num1和num2变量移到函数外部,并将它们用作全局变量?当我尝试这样做时,我得到一个错误,上面写着TypeError:error#1009:无法访问null对象引用的属性或方法。在CalculatorLab()中,您应该能够。您也可以将它们定义为类变量。如果答案有助于您解决原始问题,请接受。编辑:你刚刚做到了,谢谢!这在第19、20、21和22行中给出了4个语法错误,它们是1084:语法错误:在冒号之前应为rightparen,在此之前,我没有给出语法错误,只有一个输出参数错误,表示应为2个参数,得到1,在我将数字放入第一个框后,第二个框中的数字并单击+按钮。这是一个附加问题。为什么我不能将num1和num2变量移到函数外部,并将它们用作全局变量?当我尝试这样做时,我得到一个错误,上面写着TypeError:error#1009:无法访问null对象引用的属性或方法。在CalculatorLab()中,您应该能够。您也可以将它们定义为类变量。如果答案有助于您解决原始问题,请接受。编辑:你刚刚做到了,谢谢!