【问题标题】:AS3 Argument count mismatchAS3 参数计数不匹配
【发布时间】:2013-07-12 20:12:42
【问题描述】:

我不明白为什么只有一个参数通过。在我看来,我正在通过 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);
            }


    }

}

【问题讨论】:

    标签: actionscript-3 arguments


    【解决方案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,因为它们不会在任何地方使用。

    【讨论】:

    • 这在第 19、20、21 和 22 行给了我 4 个语法错误,它们说 1084:语法错误:在冒号之前期望 rightparen 我之前没有给出任何语法错误,只有一个输出参数错误说期望 2 个参数并得到 1,在我在第一个框中输入一个数字后,在第二个框中输入一个数字并单击 + 按钮
    • 这里还有一个问题。为什么我不能将 num1 和 num2 var 移出函数并将它们用作全局变量?当我尝试时,我得到一个错误,显示 TypeError: Error #1009: Cannot access a property or method of a null object reference。在计算器实验室()
    • 你应该可以。您也可以将它们定义为类变量。如果它帮助您解决了最初的问题,请接受答案。编辑:你刚刚做了,谢谢!
    猜你喜欢
    • 2019-03-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 2017-12-31
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多