2013-03-11 2 views
0

Я продолжаю получать эту ошибку: ArgumentError: Ошибка # 1063: несоответствие счетчика аргументов для кода :: SimonPad(). Ожидаемый 2, получил 0. Я понятия не имею, что происходит, особенно с uint. Любые подсказки будут высоко оценены. Я показал два блока кода ниже. Они основаны на ActionScript 3.0 Когда я попытался запустить эти коды, я не получил ни одного на сцене. Предполагается, что в этих кодах будут отображаться четыре разных цветных прямоугольника, но он вообще не работает. Помоги пожалуйста.AS3 ArgumentError: Ошибка # 1063: Ожидаемое 2, получено 0

package code 

{

import flash.display.MovieClip; 
import flash.events.Event; 


public class Main extends MovieClip 
{ 


    private var pads:Array = new Array(); 

    public function Main() 
    { 
     var pad:SimonPad; 

     pad = new SimonPad(0xAA0000, 0xFF0000); 
     pad.x = 5; 
     pad.y = 5; 
     addChild(pad) 
     pads.push(pad) 

     pad = new SimonPad(0x0000AA, 0x6666FF); 
     pad.x = 205; 
     pad.y = 205; 
     addChild(pad) 
     pads.push(pad) 

     pad = new SimonPad(0xAAAA00, 0xFFFF00); 
     pad.x = 5; 
     pad.y = 205; 
     addChild(pad) 
     pads.push(pad) 

     pad = new SimonPad(0x00AA00, 0x00FF00); 
     pad.x = 205; 
     pad.y = 205; 
     addChild(pad) 
     pads.push(pad) 

     addEventListener(Event.ENTER_FRAME, theFrame); 
    } 

    private function theFrame(e:Event):void 
    { 
     for (var i:int = 0; i < pads.length; i++) 
     { 
      (pads[i] as SimonPad).update(); 
     } 
    } 
} 

}

package code 

{

import flash.display.Sprite; 
import flash.display.Shape; 
import flash.events.MouseEvent; 


public class SimonPad extends Sprite 
{ 


    private var dark:Shape; 
    private var light:Shape; 

    public function SimonPad(darkColor:uint, lightColor:uint) 
    { 
     dark = new Shape(); 
     dark.graphics.beginFill(darkColor, 1); 
     dark.graphics.drawRect(0,0,190,190); 
     dark.graphics.endFill(); 
     addChild(dark); 

     light = new Shape(); 
     light.graphics.beginFill(lightColor, 1); 
     light.graphics.drawRect(0,0,190,190); 
     light.graphics.endFill(); 
     addChild(light); 

     light.alpha = 0; 

     mouseChildren = false; 

     addEventListener(MouseEvent.CLICK, downClicked); 
    } 

    private function downClicked (e:MouseEvent):void 
    { 
     flash(); 
    } 

    public function flash():void 
    { 
     light.alpha = 2; 
    } 

    public function update():void 
    { 
     if (light.alpha > 0) 
     { 
      light.alpha *= 0.85; 

      if (light.alpha < 0.0125) 
      { 
       light.alpha = 0; 
      } 
     } 
    } 
} 

}

+0

Ошибка говорит о том, что вы вызываете конструктор SimonPad без передачи в 2 требуемых цветовых аргументах. Однако этого не происходит. Это должно происходить где-то еще в вашем приложении. Если вы используете отладочный Flash Player, сообщение об ошибке будет содержать номера строк/фреймов, в которых возникает проблема. –

+1

Возможно, вы создаете SimonPad «руками», помещая объект из библиотеки в сцену/рамку. Добавить значения по умолчанию для параметров конструктора: SimonPad (darkColor: uint = 0, lightColor: uint = 0) Значения трассировки от конструктора, чтобы найти все объекты-объекты. – Smolniy

+0

Я отлаживал Flash Player, но нет сообщения об ошибке, которое будет содержать номера строк/фреймов. - Sunil – Jackal

ответ

2

Это выглядит например, у вас действительно есть экземпляр вручную на вашем этапе во время разработки. Отследите проект Flash для вручную размещенных экземпляров SimonPad. Кроме того, для того, чтобы получить кадр, вы можете попробовать этот трюк: В SimonPad() функции, наряду с предоставлением значения по умолчанию для аргументов конструктора, можно добавить следующие строки:

var e:Error=new Error(); 
trace(e.getStackTrace()); 

Это чистое вам след, содержащее что-то в строка at MainTimeline.frameXXX, которая имеет номер кадра, или at Sprite.constructChildren() at Sprite() at SomeClass(), который дает вам подсказку о том, какой прототип библиотеки класса имеет ссылку SimonPad.

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