2016-08-15 3 views
0

그래서 "오류 # 1063 : 인수 개수 불일치"오류가 발생합니다. 이상한 점은 게임을 계속 실행하지 못하는 것입니다.하지만 왜 처음에는 오류가 발생하는지 알고 싶습니다. 전체 오류는 다음과 같습니다mystery 오류 # 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() 

PlayScreen에 대한 코드는 다음과 같습니다

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이 아닌 오른쪽이? 어쨌든, 내가 말했듯이 게임이 계속 실행되지는 않지만 귀찮은 일 이니 어떤 통찰력이라도 환영합니다. 나는 그것이 명백한 무엇인가 확실하다. 감사! 소스 코드 가리키는 스택 트레이스의

첫 번째 줄의 첫 번째 줄에서 지적
at PlayScreen()[Z:\PROJECTS\Silversound\Occulus Squish\Oculus Squish\Classes\PlayScreen.as:30]
입니다 ...

답변

0

나는 추측을 가지고 있지만 난 내가 먼저 거기에 도착하는 방법을 설명 할 것이다 PlayScreen의 생성자 : addBatButton.addEventListener(MouseEvent.CLICK, addBat);
하지만, 분명히 문제가 없다가 ...

그러나 PlayScreen무비 클립를 확장하고 당신은 didn를하기 때문에 super() 문을 포함 시키면 컴파일러는 첫 번째 명령으로이를 넣습니다. 사실, 영화 클립의 생성자 스택 포인트의 이전 라인 다음 스프라이트의 차일를 만드는 데 사용되는 내부 메소드 우연히 스프라이트

신비한 constructChildren()있어서 해당 애니메이션의 클립 단계를 직접 설정할 수 있습니다. 그 때문에

그래서 내 생각 엔, 플레이어는 확장 호크 심볼의 인스턴스를 시도하고 당신이 어딘가에 무대에 위치하는, 물론 제로 인수를 전달하여 그 일입니다 무엇 정상 스프라이트 것 배고 있다.

라이브러리를 확인하여 호크을 확인한 다음 다른 심볼의 스테이지에 어떤 심볼이 있는지 확인하십시오. 그러면 옵션을 제거하고 코드에서 만들거나 클래스 서명을 수정하여 0 개의 인수를 취할 수 있습니다.

관련 문제