2010-12-19 28 views
0

我有一個動畫片段持有者,其基類爲foo。如果拼接到動態添加的動畫片段,影片剪輯不會保留其課程

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"); 
     } 
    } 
} 

我把一絲桿的構造函數,因此,如果它被正確加載,我可以告訴,當我拖出富到現場,並運行剪輯,都在它的小酒吧火了正常。然而,當我在主類將其添加到現場動態,比如像這樣:

package { 
    import flash.display.MovieClip; 

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

突然間,所有foo中的小酒吧影片剪輯恢復到普通的舊影片剪輯和不火。有沒有什麼辦法解決這一問題?

你可以在這裏下載示例文件一對夫婦額外的痕跡炫耀這是怎麼回事:http://www.megaupload.com/?d=T2R10FJN 它還是有它的孩子,他們加入並顯示,但其類型更改爲影片剪輯,忽視了基類。

+0

你應該發佈你的fla和作爲文件的zip。我只是根據你對Bar構造函數的描述複製了你的文件。意義別的東西可能在工作,也許你的文檔類沒有鏈接? – Zevan 2010-12-19 01:41:36

+0

當然,將它們添加到原始帖子的末尾 – Lance 2010-12-19 06:06:44

回答

0

getChildAt()返回一個DisplayObject。爲了訪問任何Bar方法/屬性,您需要明確地將其轉換爲Bar對象。

使用您的示例代碼...

​​

奇怪的是,(很奇怪)我剛剛注意到,Flash不跑欄的自定義構造函數,除非有代碼某處聲明中的那些對象Foo作爲Bar類型的一部分。通過簡單地修改上面的一個trace語句(以便它轉換getChildAt的返回值),Foo中的所有Bar對象都運行它們的自定義構造函數。去搞清楚。