2016-08-29 6 views
0

В небольшом проекте я создал функцию для вызова другой функции при условии.Вызов функции и приема: «Неверное количество аргументов Ожидаемое 1.»

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 после ее вызова.

В настоящее время позиция sprite1 является й = 182 и Y = 482 на этапе, который 320х480

Я не имею никакого понятия о том, почему это происходит.

ответ

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.

Все, что сказал, это не выглядит как ваша code2() функции на самом деле нужно событие предоставленного ему, я предполагаю, что вы просто имитировали ту часть из вашей функции выше code(). Вы можете полностью опустить его и просто иметь:

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

Это сработало, спасибо! –