AS3如何在分隔的文件中使用addChild()

时间:2012-12-02 19:25:34

标签: actionscript-3 flash

如何将我放入数组的MovieClip添加到舞台上? 以下代码是一个单独的.as文件,与main.fla位于同一级别 我已经尝试了很多次但是我收到了错误消息 -

  

“ReferenceError:错误#1065:未定义变量阶段。在Set1()   在main_fla :: MainTimeline / frame1()“

我该怎么办?感谢您的帮助!!

package 
{
    import flash.display.MovieClip;
    import flash.display.Stage;
    public class Set1
    {
        private var map:Array=new Array();

        public function Set1()
        {
            for (var i:Number=0; i<5; i++)
            {
                var cell_mc=new cell();
                cell_mc.x = 50+ i*cell_mc.width;
                cell_mc.y = 50;
                cell_mc.className=i;
                map[i] = cell_mc;
                trace(map[i].className);
                stage.addChild(map[i]);
                }

        }

    }

}

2 个答案:

答案 0 :(得分:2)

你有点混乱。 stage不是魔术变量,而是从DisplayObject基类继承的属性。将一个显示对象添加到舞台时,该属性将在内部设置。因此,在您的情况下,您的类需要继承自DisplayObject - 可能是Sprite类。或者,只需在调用函数时从外部注入Stage的引用

答案 1 :(得分:0)

首先,您需要设置主Flash文件类。您可以通过单击fla中的舞台来完成此操作。在属性中编辑和编辑您的类(应该看起来像这样(类:Set1)) 下面的代码应该可以正常工作

 package 
    {
        import flash.display.MovieClip;
        import flash.display.Sprite;
        public class Set1 extends Sprite
        {
            private var map:Array=new Array();

            public function Set1()
            {
                for (var i:Number=0; i<5; i++)
                {
                    var cell_mc=new cell();
                    cell_mc.x = 50+ i*cell_mc.width;
                    cell_mc.y = 50;
                    cell_mc.className=i;
                    map[i] = cell_mc;
                    trace(map[i].className);
                    addChild(map[i]);
                    }

            }

        }

    }