AS3 ArgumentError:错误#1063:预计2,得到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,则错误消息将包含问题发生位置的行号/帧号。 – 2013-03-11 17:04:37

+1

也许你通过将库中的对象放入场景/框架中来“手动”实例化SimonPad。为构造函数参数添加默认值:SimonPad(darkColor:uint = 0,lightColor:uint = 0)从构造函数跟踪值以查找所有实例化对象。 – Smolniy 2013-03-11 18:00:05

+0

我确实调试过Flash Player,但没有包含行/帧号的错误消息。 - Sunil – Jackal 2013-03-12 01:21:22

它看起来就像您在设计时在舞台上真的手动放置了SimonPad实例一样。请跟踪您的Flash项目,以便手动放置SimonPad实例。另外,为了得到框架,你可以试试这招:在SimonPad()功能,以及用于构造函数的参数提供默认值,您可以添加以下行:

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

这将净赚你容纳东西在跟踪行号为at MainTimeline.frameXXX,它有一个帧号,或者at Sprite.constructChildren() at Sprite() at SomeClass(),它给你提示哪个类的库原型有SimonPad引用。