2010-12-19 5 views
0

私はホルダームービークリップを持っています。その基本クラスはfooです。MovieClipsは、動的に追加されたムービークリップに子を付けてもクラスを保持しません。

package { 
    import flash.display.MovieClip; 

    public class Foo extends MovieClip { 
     public function Foo() { 
      trace("foo"); 
     } 
    } 
} 

fooの中には、基本クラスのbarを持つ他のムービークリップが多数あります。

package { 
    import flash.display.MovieClip; 

    public class Bar extends MovieClip { 
     public function Bar() { 
      trace("bar"); 
     } 
    } 
} 

それが正しく読み込まれていた場合、私が言うことができる、と私はシーンにFOOをドラッグして、クリップを実行すると、その中のすべての小さなバーが正しくオフ火災ので、私はバーのコンストラクタでトレースを置きます。しかし、私は、このようなメインクラスでこのようとして、動的シーンに追加するとき:

package { 
    import flash.display.MovieClip; 

    public class Main extends MovieClip { 
     public function Main() { 
      this.addChild(new Foo()); 
     } 
    } 
} 

突然、fooの内のすべての小さなバーのムービークリップは、通常の古いムービークリップに戻すと起動しません。これを修正する方法はありますか? http://www.megaupload.com/?d=T2R10FJN まだ子どもがいて、追加されて表示されますが、そのタイプはMovieClipに変更され、基本クラスは無視されます。

+0

flaとファイルのzipを投稿する必要があります。バーのコンストラクタが正しく起動されたことに基づいてファイルを複製しました。他に何かが働いていることを意味します。おそらく、あなたのドキュメントクラスはリンクされていませんか? – Zevan

+0

確かに、元の投稿の末尾に追加してください – Lance

答えて

0

getChildAt()はDisplayObjectを返します。 Barメソッド/プロパティのいずれかにアクセスするには、Barオブジェクトとして明示的にキャストする必要があります。例えば、あなたのコードを使用して

...奇妙な

​​

、(非常に奇妙な)私はちょうどSOMEWHERE内でこれらのオブジェクトを宣言するコードがある場合を除き、Flashがバーのカスタムコンストラクタを実行していないことに気付きましたフーはバータイプのものです。上記の1つのトレースステートメントを変更するだけで、Foo内にあるすべてのBarオブジェクトがカスタムコンストラクタを実行しました。 Go figure。

関連する問題