在root上覆盖addChild()?

时间:2011-05-31 21:13:17

标签: flash actionscript-3 override root addchild

我已经看过在movieclips中覆盖addChild的方法,但是你能在最高根级别进行吗?如同,在主时间轴上覆盖它。

3 个答案:

答案 0 :(得分:1)

这是你需要做的。首先为FLA创建一个文档类。在这种情况下,我称之为Main.as:

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

    public class Main extends MovieClip
    {
        public function Main()
        {
            var spr : MovieClip = new MovieClip();
            spr.graphics.beginFill(0x666666, 1);
            spr.graphics.drawRect(0, 0, 100, 100);
            addChild(spr);
        }

        override public function addChild (child : DisplayObject) : DisplayObject
        {
            // Do whatever it is you need to do here, but remember to call super.addChild() if you actually want to get anything added to the stage.
            trace ("I'm gonna add the heck out of this child: " + child);
            return (super.addChild(child));
        }
    }
}

然后,您需要在FLA中设置文档类(查看“属性”面板,不选择任何阶段对象)。

答案 1 :(得分:0)

您可以创建自己的Document类,并在其中覆盖addChild。

答案 2 :(得分:0)

您可以覆盖继承addChild方法的任何类的内部。例如:

package
{
    import flash.display.MovieClip;

    public class ShadowBox extends MovieClip
    {
        private var container:MovieClip = new MovieClip();

        public function ShadowBox( s:ShadowBoxSettings )
        {
            super.addChild( container );
        }

        override public function addChild( child:DisplayObject ):DisplayObject
        {
            container.addChild( child );

            return child;
        }
    }
} 

来源:

http://www.ultrashock.com/forum/viewthread/119614/