从DocumentClass引用由另一个类的实例创建的movieclip

时间:2011-08-21 16:20:21

标签: actionscript-3 document-class

我在Flash项目中有这个main(文档类):

package  {
    import flash.display.MovieClip;
    import flash.events.Event;
    public class main extends MovieClip {

        public function main() {
            var other=new Other(this);
        }
    }   
}

这是其他类:

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

        public class Other extends MovieClip {
            //
            public function Other(ref) {
                //
                var clippo = new Clippo();
                clippo.name="clippo";
                clippo.x=100;
                clippo.y=100;
                //1
                //ref.addChild(clippo);
                //2
                addChild(clippo);
            }
        }
}

现在:如果我将主类的引用(ref)传递给Other并且我在第一种情况下添加了clippo,我可以从main(getChildAt(0)是“clippo”引用movieclip clippo “从主要的)。但是,有没有办法使用第二种方法(没有参考)并从主类做同样的事情?当其他人创建它时,我可以在舞台上看到clippo,但我无法理解clippo“生活”在DisplayList中的位置。

2 个答案:

答案 0 :(得分:0)

如果您遇到此类问题,可能需要重新考虑您的架构。

制定一些规则,让自己更轻松,例如:不要让孩子元素将孩子添加到父母那里。

我认为获取clippo DisplayObject引用的最佳方法是为它提供一个getter方法。

public function get clippo():Clippo
{
    return this.clippo;
}

答案 1 :(得分:0)

我不确定你要完成什么,但是:

  1. 如果要查看显示列表或其子项,则需要将other添加到显示列表中。

    public function main()
    {
        var other:Other = new Other(this);
        addChild(other);
    }
    
  2. 您可以使用root而不是传递对文档类的引用。 (一旦它出现在显示列表中)。

    root.addChild(clippo);
    

    但是,将它添加到其他内容更有意义:addChild(clippo)

  3. 创建DisplayObjects的位置不会影响显示列表,只调用addChild。在文档类中调用addChild,在其他文档中调用root.addChild会导致显示相同的列表。