2009-03-25 12 views
1

여러 라이브러리 애셋에 사용하려는 MovieClip 하위 클래스 (MyClip)를 만들고 있습니다. ActionScript 코드에서 이러한 무비 클립을 인스턴스화합니다. MyClip에는 생성자 매개 변수가있어 특정 속성의 초기 값을 설정할 수 있습니다.AS3 자동 생성 애셋 클래스의 생성자에 매개 변수 전달

여러 라이브러리 자산에 사용하고 싶기 때문에 논리적 인 방법으로 "심볼 속성"대화 상자의 "기본 클래스"텍스트 상자에 지정하는 것 같습니다. 문제는 자동 생성 된 하위 클래스에는 매개 변수가있는 생성자가 없다는 것입니다. 대신 Flash는 기본 생성자 만 사용하여 생성하려고 시도하지만 MyClip에는 기본 생성자가 없기 때문에 실패합니다.

정상적인 방법으로 속성 초기화를 연기하는 것 외에는 다른 방법이 있습니까?

편집 : 나는 명확하지 않다. 여기서 분명히하려고 노력할 것이다. 이것은 MyClip 클래스 인 경우 :

public class MyClip extends MovieClip 
{ 
    private var someValue : Number; 

    public function MyClip(someValue : Number) 
    { 
     this.someValue = someValue; 
    } 
} 

내가 도서관에서 기호 MyClipA에 대한 기본 클래스로 MyClip을 지정, 내가 이상적으로 MyClipA 클래스에게 자신을 작성하지 않고도 clip = new MyClipA(17);을 할 수 있도록하고 싶습니다.

+0

해결책을 찾았습니까? –

+0

Nope. 이 작업을 수행 할 수있는 방법이 없습니다. 이것이 당신이 직면하고있는 상황이라면, 최선의 방법은 초기화를 일반적인 방법으로 연기하거나 quoo와 같은 클래스를 재구성하는 것입니다. –

답변

1

MyClipA 및 MYClipB 등의 클래스를 만들어야하는 이유가 MyClip 개체의 동작을 가진 개체에 다른 미술을 첨부한다고 가정합니다.

아마 당신은 당신의 기본 클래스 만들기, 다르게 접근 할 수 - 당신이 당신의 예를 가지고 MyClip을 예술에 대한 참조 중 하나는 2 aruguments, 동의 :

public class MyClip extends MovieClip 
{ 
    public var art:ArtBaseClass 
    private var someValue : Number; 

    public function MyClip(someValue : Number, artClass:ArtBaseClass) 
    { 
     this.someValue = someValue; 
     this.art = new artClass(); 
     this.addChild(art); 
    } 
} 

을 그리고 당신은 정의 할 수 있습니다 어떤 그렇지 않은 경우 ArtBaseClass에서 필요하며 이러한 아트 라이브러리 객체 각각에 적용됩니다.

0

생성자에 대한 기본 인수를 지정하십시오 (null을 특수 값으로 설정 하시겠습니까?). 그런 다음 생성자 시작 부분에서 MovieClip의 적절한 기본값을 설정하는 오류 검사를 추가하십시오. 그것은 정말 해키지만, 내가 아는 한 드래그를 사용하여 더 좋은 방법은 없다는 것을 알고 있습니다. & UI 애니메이트 드롭 (코드를 통해서만 할 수 있습니다).

+0

실제로 그 매개 변수가 필요하지 않으면 작동합니다. 상황이 그렇듯이 클래스를 기본 생성자로 남겨두고 객체가 생성 된 후에 초기화를 수행하는 "초기화"메소드를 구현해야 할 것입니다. 어떤 엿 같은;) –

0

이 경우에도이 문제가 발생했습니다. 이를 해결하는 적절한 방법은 MyClip에서 상속받은 MyClipA 및 MyClipB에 대한 클래스를 만드는 것입니다. MyClip을 기반으로하는 많은 클래스가 있으면이 작업이 번거로울 수 있습니다. 그런 다음에 다시 그런 경우라면 어쨌든 상속 대신 컴포지션을 사용하는 것에 대해 생각해보기를 원할 수 있습니다.

1

정말 할 수 있다고 생각하지 않습니다. 하지만 할 수 있다면 프로토 타입과 제대로 일치 할 것입니다. 아마도 각 기본 클래스의 생성자를 변경할 수 있습니다.