2016-08-15 49 views
0

所以我得到了“错误#1063:参数计数不匹配”错误。奇怪的是,它并没有阻止游戏的运行,但我想知道为什么我会在第一时间发现错误。完整的错误是:神秘错误#1063:参数计数不匹配

ArgumentError: Error #1063: Argument count mismatch on Hock(). Expected 3, got 0. 
    at flash.display::Sprite/constructChildren() 
    at flash.display::Sprite() 
    at flash.display::MovieClip() 
    at PlayScreen()[Z:\PROJECTS\Silversound\Occulus Squish\Oculus Squish\Classes\PlayScreen.as:30] 
    at Main/addPlayscreen()[Z:\PROJECTS\Silversound\Occulus Squish\Oculus Squish\Classes\Main.as:17] 
    at Main()[Z:\PROJECTS\Silversound\Occulus Squish\Oculus Squish\Classes\Main.as:13] 
    at runtime::ContentPlayer/loadInitialContent() 
    at runtime::ContentPlayer/playRawContent() 
    at runtime::ContentPlayer/playContent() 
    at runtime::AppRunner/run() 
    at ADLAppEntry/run() 
    at global/runtime::ADLEntry() 

守则播放屏幕是:

import flashx.textLayout.formats.BackgroundColor; 
import flash.display.SimpleButton; 
import flash.ui.Mouse; 
import flash.text.TextField; 
import flash.display.MovieClip; 
import flash.events.Event; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 
import flash.events.MouseEvent; 
import flash.events.KeyboardEvent; 
import flash.ui.Keyboard; 

public class PlayScreen extends MovieClip 
{ 

    public var batArmy:Array; 
    public var hockArmy:Array; 
    public var shadow:Shadow; 
    public var crossHairs:CrossHairs; 
    var Layer01:MovieClip; 
    var Layer02:MovieClip; 
    var Layer03:MovieClip; 
    var Layer04:MovieClip; 
    var Layer05:MovieClip; 
    var randomX:Number = 300 + (660 - 300) * Math.random(); 

    public function PlayScreen() 
    { 
     //Mouse.hide(); 
     addBatButton.addEventListener(MouseEvent.CLICK, addBat); 
     addHockButton.addEventListener(MouseEvent.CLICK, addHock); 
     batArmy = new Array(); 
     hockArmy = new Array(); 
     //addEventListener(Event.ENTER_FRAME, crossHairsMove); 
     //stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPress); 

     Layer01 = new MovieClip; 
     this.addChild(Layer01); 
     Layer02 = new MovieClip; 
     this.addChild(Layer02); 
     Layer03 = new MovieClip; 
     this.addChild(Layer03); 
     Layer04 = new MovieClip; 
     this.addChild(Layer04); 
     Layer05 = new MovieClip; 
     this.addChild(Layer05); 


     //add crossHair 


     /*crossHairs = new CrossHairs(mouseX,mouseY,this); 
     Layer05.addChild (crossHairs); 
     addEventListener(Event.ENTER_FRAME, crossHairsMove);*/ 


    } 
    /*public function onKeyPress(keyboardEvent:KeyboardEvent):void 
    { 
     if (keyboardEvent.keyCode == Keyboard.DOWN) 
     { 
      trace("yar"); 
      addBat; 
     } 
    }*/ 
    public function addBat(mouseEvent:MouseEvent):void 
    { 
     var randomX:Number = 300 + (660 - 300) * Math.random(); 
     var newBat = new Bat(randomX, -50, this); 
     batArmy.push (newBat); 
     Layer02.addChild (newBat); 
    } 
    public function addHock(mouseEvent:MouseEvent):void 
    { 
     var newHock = new Hock(-72, 170, this); 
     hockArmy.push (newHock); 
     Layer02.addChild (newHock); 
    } 
    /*public function crossHairsMove (e:Event):void 
    { 
     crossHairs.x = mouseX; 
     crossHairs.y = mouseY; 
    }*/ 
} 

,并从它的错误有事情做与福类的长相,所以这里的该代码:

import flash.display.MovieClip; 
import flash.utils.Timer; 
import flash.events.TimerEvent; 
import flash.ui.Mouse; 
import flash.events.KeyboardEvent; 
import flash.ui.Keyboard; 
import flash.events.Event; 

public class Hock extends MovieClip 
{ 
    private var _screen: PlayScreen; 
    public var xSpeed:Number; 

    public function Hock(startX:Number, startY:Number, screen:PlayScreen) 
    { 
     _screen = screen; 
     x = startX; 
     y = startY; 
     width = 100; 
     scaleY = scaleX; 
     addEventListener(Event.ENTER_FRAME, moveRightFar); 
     addEventListener(Event.ENTER_FRAME, moveSpeed) 
    } 
    public function moveSpeed(e:Event):void 
    { 
     x += xSpeed; 
    } 
    public function moveRightFar (e:Event): void 
    { 
     if (x < 0) 
     { 
      gotoAndStop("rollRight"); 
      xSpeed = 13; 
     } 
     else if (x >= 240) 
     { 
      gotoAndStop("still") 
      xSpeed = 0; 
     } 
    } 

} 

现在我可能是错的,但我认为这是其在“addHock”功能与var newHock = new Hock(-72, 170, this);一个问题,但我有3个参数那里,不为0,对吗?无论如何,就像我说的那样,它不会阻止游戏的运行,但它有点令人讨厌,所以任何见解都是值得欢迎的。我相信这是明显的。谢谢!

回答

0

我有一个猜测,但我会解释我是如何到达那里的第一...

你的源代码指向堆栈跟踪的第一行是
at PlayScreen()[Z:\PROJECTS\Silversound\Occulus Squish\Oculus Squish\Classes\PlayScreen.as:30]
,其指向的第一行播放屏幕的构造函数:addBatButton.addEventListener(MouseEvent.CLICK, addBat);
但显然这个问题是不存在的...

播放屏幕延伸影片剪辑因为你没没有特别包含一个super()语句,编译器会把它作为第一个命令。事实上,堆栈指向的的MovieClip的构造方法的前行,然后到的Sprite

这正好是用于创建的Sprite的儿童的内部方法的神秘constructChildren()方法,该方法您可能直接从Animate在剪辑的舞台上进行设置。

所以我的猜测是,玩家试图实例扩展的象征,你定位在舞台上的某个地方,当然是通过传递零个参数做,因为这是一个正常的雪碧会期望。

检查你的资料库,看看什么延伸Hock然后看看哪一个被放置在其他符号的舞台上。然后,您的选项将删除该代码并从代码创建它,或者重新修改类签名以获取零个参数。