2010-12-19 24 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对象都运行它们的自定义构造函数。去搞清楚。