2012-12-02 66 views
1

如何將放入數組的MovieClip添加到舞臺? 下面的代碼是分開的。至於文件,位於與main.fla 我已經嘗試了很多次同樣的水平,但我得到了錯誤的信息 -AS3如何在分隔文件中使用addChild()

"ReferenceError: Error #1065: Variable stage is not defined. at Set1() at 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

你有點混淆了。 stage不是一個魔術變量,而是它是從DisplayObject基類繼承的屬性。當顯示對象添加到舞臺時,該屬性在內部設置。所以在你的情況下,你的課程需要繼承DisplayObject - 可能是Sprite課程。或者當你調用你的功能時,從外部簡單地注入一個Stage的引用

+0

我還想補充一點,你的類需要從的DisplayObject inherity(如雪碧)以便被添加到顯示器。從你的示例代碼中不清楚你是否已經完成了。 –

0

首先,你需要設置主Flash文件類。你會通過點擊你的fla中的舞臺來做到這一點。文件並在屬性中修改你的類(應該是這樣的(類:集1))低於 代碼應該工作正常

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

      } 

     } 

    } 
相關問題