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



我在Flash项目中有一个主要的(文档类(:

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

现在:如果我将main类的引用(ref(传递给Other,并添加clippo,正如您在第一种情况中看到的那样,我可以从main中引用movieclip-clippo(getChildAt(0)是main中的"clippo"(。但是,有没有办法使用第二个方法(没有ref(并从主类中执行同样的操作?当Other创建clippo时,我可以在舞台上看到它,但我不明白clippo在DisplayList中的"位置"。

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

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

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

    root.addChild(clippo);
    

    但是,将其添加到Other:addChild(clippo) 更有意义

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

如果您遇到这种问题,您可能需要重新思考您的体系结构。

制定一些你遵循的规则,让事情变得更容易,比如;不要让child元素将子元素添加到父元素中。

我认为获得clippoDisplayObject引用的最好方法是为它提供一个getter方法

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

最新更新