调用函数并接收:"参数数量不正确。预计1。"

时间:2016-08-29 01:07:27

标签: actionscript-3 actionscript

在一个小项目中,我创建了一个函数来调用另一个函数。

import flash.events.Event;

var yspeed:Number=0;
var maxspeed:Number=5;
var accel:Number=.1;
stage.addEventListener(Event.ENTER_FRAME, code);
function code(codeevent:Event){
    if(sprite1.y>449){
        code2();
    }
}


function code2(code2event:Event):void{
    if(yspeed<5){
        yspeed+=.5
        yspeed-=accel
        }
    if(yspeed>5){
        yspeed=5
    }
    sprite1.y-=yspeed;
    trace(yspeed)
}

我收到错误:Line 9 1136: Incorrect number of arguments. Expected 1. 在第九行,只有code2();

注意,我已经尝试过了

code2(Event);

code2(code2event:Event); 

code2(code2event); 

所有人都会遇到不同的错误。 我还尝试更改函数的名称,并在调用后添加:void

目前,在320x480

的舞台上,sprite1的位置为x = 182且y = 482

我对为何发生这种情况一无所知。

1 个答案:

答案 0 :(得分:3)

当您使用不定义默认值的参数定义函数时,它们是必需的(您必须在调用函数时为这些参数提供值)。您可以通过定义默认值null来解决您的问题:

function code2(code2event:Event = null) {
    // ...
}

或者在调用函数时明确提供null

code2(null);

至于你的尝试:

  1. code2(Event) - 您在此处传递对类Event的引用,而不是Event类的实例。
  2. code2(code2event:Event) - 这种语法是完全错误的,您只在声明变量,参数等时注释(添加:Type),而不是在提供值时。
  3. code2(code2event) - 如果您的代码中有Event个实例分配给名为code2event的变量,那么这将是有效的。
  4. 所有这一切,看起来你的code2()函数实际上不需要提供给它的事件,我假设你只是模仿了上面的函数code()中的那部分。您可以完全省略它,只需:

    function code2():void {
        // ...
    }