2010-01-27 7 views
1

자,이 질문을 수천 번 제기했습니다. 지금까지 아무도 나를 도울 수 없었습니다. 나는 새로운 것을 발견했기 때문에 나는 다시 일어나고 있습니다. 과거에 나는, 클래스 개체에 대해 내가 무비 클립이나 스프라이트에 서브 클래스 내 수업이 할 수있는 것을 알 수AS3이 생성자를 허용하지 않습니다.

1136: Incorrect number of arguments. Expected 0. 

나는 다음과 같은 오류가 그렇게 할 때마다 매개 변수를 만들 수 없었다 생성자 매개 변수를 가지고 있지만 하위 클래스의 하위 클래스는 아닙니다. 이것 뒤에 어떤 이유가 있습니까? 여기

var cloud = new Cloud(5, 4); 

package com.objects{ 
    import flash.events.Event; 
    import flash.utils.*; 

    public class Cloud extends gameObject { 

     public var maxSpeed = 30; 
     public var minSpeed = 5; 
     public var cspeed:Number = 0; 

     public function Cloud(min:Number = 0, max:Number = 0):void 
     { 
      var rand = Math.ceil(Math.random() * totalFrames); 
      gotoAndStop(rand); 
     } 

     public function rand(min:Number, max:Number):void 
     { 
      maxSpeed = max; 
      minSpeed = min; 
      cspeed = (Math.ceil(Math.random() * maxSpeed)+ minSpeed); 
     } 

     override public function updateObject():void 
     { 
      eApi.setChildIndex(this, (eApi.numChildren - 1)); 
      y += cspeed; 

      if(y > 800) 
       garbage = true; 
     } 


    } 
} 

, 나는 단지 몇 막연한를 제공 할 수 있습니다 "연결 컴퓨터습니까?"코드를 보지 않고 상위 클래스

package com.objects { 

    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.events.*; 
    import flash.utils.getTimer; 

    public class gameObject extends MovieClip implements IgameObject 
    { 
     public static var EG:Engine; 
     public var wPosX:Number = 0; 
     public var wPosY:Number = 0; 

     public var vPosX:Number = 0; 
     public var vPosY:Number = 0; 

     public var px:Number = 0; 
     public var py:Number = 0; 

     public var right:Number = 0; 
     public var bottom:Number = 0; 
     public var left:Number = 0; 
     public var top:Number = 0; 
     public var centerx:Number = 0; 
     public var centery:Number = 0; 
     static public var eApi:EngineApi; 
     public var health:Number = 1; 
     public var maxHealth:Number = 1; 
     protected var lastTime:Number; 
     public var ts:TargetSystem; 

     public var col:Number; 
     public var row:Number; 
     public var map:Number; 
     public var dead:Boolean = false; 

     public var garbage:Boolean = false; 

     public function gameObject():void { 

     }//End Constructor 

     static public function addEngine(e:EngineApi):void 
     { 
      eApi = e; 
     } 

     public function updateObject():void 
     { 

     } 
     public function Attack(dir:Number = -40):void 
     { 

     } 

     public function GarbageCollect():gameObject 
     { 
      return this; 
     } 

     public function getTime():int 
     { 
      var time:int = getTimer(); 
      return time; 
     } 
    } 
} 
+0

인수를 취하지 않을 때 생성자 인수를 제공 한 결과 오류가 발생한 것 같습니다. –

+0

클래스의 상속 트리에 constrcutors를 제공하십시오. Anthony Forloney는 자신의 가정에서 정확합니다. 또한 인스턴스를 인스턴스화하는 방법을 보여줍니다. – sberry

+0

응답 해 주셔서 감사합니다. 안토니가 잘못되었습니다. 필자가 제공 한 코드에는 필자의 생성자에 대한 인수가 명시되어 있습니다. – numerical25

답변

3

그것은 당신이 그것을 어떻게, 매개 변수 플래시를 나던을 복용하는 사용자 정의 클래스 (무비 클립, 스프라이트, ..)에 플래시 IDE를 통해 기호을 할 수 이러한 클래스를 실체화하는 방법을 알고 부착된다 기대하는 매개 변수를 추측 하시겠습니까?

클래스를 인스턴스화 할 수없는 경우에만 나중에 클래스를 초기화하거나 기본 매개 변수를 제공해야합니다.

+0

그래서 기호가 첨부 된 모든 사용자 정의 클래스는 생성자 arguements를 사용할 수 없다는 것을 말하고 있습니까 – numerical25

+0

심볼이 첨부되지 않은 클래스에서만 올바르게 작동 할 수도 있습니다. 나는 그 이유를 잘 이해하지 못합니다. 그러나 조각들이 모여 들고 있습니다. 좀 더 자세히 설명해 주시겠습니까? 가능하다면. 감사!! – numerical25

+0

인수가 필요한 사용자 정의 클래스에 기호가 붙어 있다면 IDE가 예상 한 인수의 값을 추측 할 수 없기 때문에 IDE에서 인스턴스화 할 수 없다고 말합니다 – Patrick

2

입니다 - 스타일 제안 :

- 체크 하위 클래스와 이름이 같은 기존 클래스가 없는지 확인하십시오. 수업 마지막에 넌센스 (예 : "MyClassFl4134qq")를 추가하여 충돌 여부를 확인하십시오. 변경하면 문제가 해결됩니다.

- 서브 클래 싱중인 클래스가 '최종'으로 표시되지 않았는지 확인하십시오.

- '수퍼 (...)'생성자에 대한 호출이 서브 클래스가 아닌 수퍼 클래스에 대한 올바른 수의 인수를 갖고 있는지 확인하십시오.

- 변수 선언을 확인하십시오. 해당 변수에 지정하는 객체의 유형이 선언 한 유형과 일치하는지 확인하십시오.

내가 내기를해야한다면, 아마도 클래스 이름 충돌이 있다고 말하고 싶습니다 (제 1 제안 참조).

+0

죄송합니다. 이전에 코드를 게시 한 사람이 누구인지 알 수 없었습니다. 나는 왜이 포스트에서 일할 수 없는지에 대한 이유를 얻으려고했다. 하지만 위 코드를 추가했습니다. – numerical25

1

하위 하위 클래스에 생성자를 구현해야합니다. 그렇지 않으면 flash는 인수를 취하지 않는 빈 생성자에서 대체합니다.

+0

흠 .. 좋은 대답입니다 ... 아마도 내가 잘못 생각한 것 같습니다 그는 그가 부르려고하는 생성자를 구현했다. +1 – iandisme

관련 문제