2011-08-25 3 views
0

오랜 프로그래머에게는 AS3을 처음 사용합니다. 본질적으로 나는 무수한 객체를 만들고 있는데, 모두 속성이 아트웍을 포함한 각 객체마다 다를지라도 모두 동일한 기능을 갖습니다. 나는 그들이 대화 형이되어서 그들이 움직일 것이라고 믿기 때문에 모두 영화 클립이 될 것이라고 믿습니다.비슷하거나 기능이 비슷하지만 속성이 다른 객체를 인스턴스화하는 방법은 무엇입니까?

이 개체를 만드는 가장 좋은 방법은 무엇입니까? 저는 기능과 속성을 가진 객체 클래스를 생성한다고 가정합니다. 다른 속성으로 여러 복사본을 인스턴스화하는 방법을 잘 모르겠습니다.

불쌍한 표현으로 불쌍하게 생각합니다. 필요한 경우 정교하게 도울 수 있으며 사전에 도와 주셔서 감사합니다. :)

답변

3

클래스를 만듭니다.

package { 
    import flash.display.MovieClip; 

    public class MyMovieClip extends MovieClip { 
    } 
} 

다를 수있는 속성을 추가하십시오.

package { 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 

    public class MyMovieClip extends MovieClip { 
     private var _borderColor : uint; 
     private var _artWork : DisplayObject; 
    } 
} 

속성을 수정할 수있는 가능성을 추가하십시오. 생성자 인수 또는 명시 적 getter/setter를 사용하거나 속성을 public으로 선언 할 수 있습니다.

package { 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 

    public class MyMovieClip extends MovieClip { 
     private var _borderColor : uint; 
     private var _artWork : DisplayObject; 

     // using constructor parameters 

     public function MyMovieClip(borderColor : uint, artWork : DisplayObject) { 
      _borderColor = borderColor; 
      _artWork = artWork; 
     } 

     // using setter/getter 

     public function set borderColor(borderColor : uint) : void { 
      _borderColor = borderColor; 
     } 

     public function get borderColor() : uint { 
      return _borderColor; 
     } 

     public function set artWork(artWork : DisplayObject) : void { 
      _artWork = artWork; 
     } 
     public function get artWork() : DisplayObject { 
      return _artWork; 
     } 

    } 
} 

클래스의 인스턴스를 생성하고 다른 값을 사용하여 설정 :

package { 
    import flash.display.Shape; 
    import flash.display.Sprite; 

    public class Main extends Sprite { 
     public function Main() { 
      var myMc1 : MyMovieClip = new MyMovieClip(0xFF0000, new Shape()); 
      var myMc2 : MyMovieClip = new MyMovieClip(0x0000FF, new Shape()); 
      var myMc3 : MyMovieClip = new MyMovieClip(0x00FF00, new Shape()); 

      myMc1.borderColor = 0xFF0000; 
      myMc3.artWork = new Shape(); 
     } 
    } 
} 
+0

yah 나는 이것에 대한 편집자를 여는 게 더 게을 렀다. 이것은 더 좋은 대답이다 – shaunhusain

+0

편집기를 열어 두었다. 2 분. –

+0

옌스, 시간 내 주셔서 감사합니다! 이것은 내가 분명히하려고 노력하는 것을 절대적으로 만든다. 그러나 또한 두 개의 질문이 더 남는다. 1. 인스턴스에 사용해야하는 아트 워크/무비 클립을 어떻게/어디서 정의해야합니까? 2. 개체가 50 개라고하면 각 개체에 대한 데이터를 어디에 저장할 것입니까? 데이터베이스와 AMF 호출을 올바르게 사용하고 있습니까? 다시 감사합니다! – PaleAilment

1

AS3에서 Object 클래스는 수정 자에서 동적으로 표시되며 이후에 원하는 모든 속성을 동적으로 추가 할 수 있습니다. 또한 마찬가지로 클래스를 만들어 동적으로 표시 한 다음 해당 속성을 즉시 추가 할 수 있습니다 ... 이러한 속성을 사용하는 방법을 적절히 평가하려면 합병증에 가치가 없을 수도 있지만 그렇지 않으면 다른 속성을 사용하는 것이 가장 좋습니다. 다른 유형의 객체에 대한 클래스 기본 기능을 공유하는 경우 기본 클래스를 만들어 특정 유형의 각 개체에 대해 확장 할 수 있습니다. 내가 확장 아마 당신이 뭘 하려는지 달성하기 위해 더 나은 방법이라고 생각 위에 말한대로 나는 큰 옹호 해요 또한 ... 그러나 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/statements.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6#dynamic

:

여기에 동적 키워드에 대해 자세히 알아보기 Flex 프레임 워크를 사용하여 AS3을 더욱 쉽게 사용할 수 있습니다. AS3을 사용하는 OOP에 대한 자세한 내용은 여기를 참조하십시오. http://www.adobe.com/devnet/actionscript/articles/oop_as3.html

이 정보가 도움이되는지 또는 다른 정보를 원한다면 알려주십시오.

+0

그것은 동적 클래스와 개체가 정의 된 프로퍼티와 메소드와 사용자 정의 클래스보다 컴파일러에 대한 더 많은 일을 만드는 것이 주목할 필요가 , 그렇다면 사용하지 않아야합니다. – shanethehat

+0

응답 해 주셔서 감사합니다! :) – PaleAilment

+0

@shaunhusain 의견을 보내 주셔서 감사합니다. 이 프로젝트는 페이스 북 응용 프로그램이되어 게임입니다. 다른 swfs에 상태 저장소 URL이 무슨 뜻인지 잘 모르겠습니다. 각 수준이 별도의 SWF라는 것을 알 수있었습니다. 이미지/아트웍을 데이터베이스에 저장 한 경우 어떻게하면 아트웍을 오브젝트 인스턴스에 첨부 할 수 있습니까? – PaleAilment

관련 문제