2012-06-03 117 views
0

我是在AS3中添加類的新手,迄今爲止,我只是一直在做電影的frame1上的所有內容。我想我應該最終學習類,所以在這裏:)當我添加對象到屏幕上時,我喜歡將它們組合在容器對象中以備後用。所以我有一個我正在構建的Hex的棋盤,我試圖讓它們進入名爲hexContainer的MovieClip,我有舞臺上的地方。現在,如果我像通常那樣執行此代碼,則只需執行hexContainer.addChild(tempHex)。然而,這是我扔的錯誤1120AS3 - 從類中向MovieClip容器添加對象

我的類代碼如下:

package 
{ 
import flash.display.MovieClip 
import Hex 
import flash.display.Stage 

public class Boards extends Hex 
{ 
    public function buildBoardOne() 
    { 
     for(var i:int = 1; i <= 5; i++) 
     { 
      var tempHex:Hex = new Hex(); 
      tempHex.x = 100; 
      tempHex.y = 100; 
      hexContainer.addChild(tempHex); 
     } 
    } 

} 

}

我在一開始只是有這些添加到舞臺做了,並得到一個錯誤當我這樣做時,這就是爲什麼進口聲明在那裏。我檢查了谷歌找出爲什麼,這就是他們所說的。

現在,當我將這些添加到舞臺上時,它工作得很好。我可以得到我的十六進制,並操縱他們,我們參加了,這是一個美好的時光。現在我試圖將它們放入容器影片剪輯中,他們對我很生氣,我無法安撫它們:p

任何幫助你們可以給我將不勝感激。

編輯的代碼來測試什麼okayGraphics建議:

package 
{ 
    import flash.display.MovieClip 
    import Hex 
    import flash.display.Stage 

    public class Boards extends Hex 
    { 
     var hexContainer:MovieClip = new MovieClip(); 
     stage.addChild(hexContainer); 

     public function buildBoardOne() 
     { 
      for(var i:int = 1; i <= 5; i++) 
      { 
       var tempHex:Hex = new Hex(); 
       tempHex.x = 100; 
       tempHex.y = 100; 
       stage.addChild(tempHex); 
      } 
     } 

    } 

} 
+3

我可以提出的一個建議是,當你在純粹的類中開始編程時,你忘記了舞臺及其內容,而完全使用ActionScript工作。這將大大減少混淆。使用文檔類作爲圖形的主要入口點(因爲它必須擴展Sprite或MovieClip)。 – Marty

+0

我不確定如何去解決這個問題。不知道什麼文件類是>。<如果你不介意擴大或告訴我你的意思我真的很感激它:)並感謝您的幫助 –

回答

1

因爲hexContainer未在此包中定義你得到一個1120錯誤。 你要麼(1)需要聲明var hexContainer = [your_reference_here]嘗試給孩子添加到它之前,

(2)你可以添加不吉利的東西作爲孩子董事會類,然後添加到您的hexContainer 。 而不是hexContainer.addChild(TempHex);只是把addChild(TempHex);

還有很多其他的方式來做到這一點,但我認爲這兩個是最直接的方法。

+0

@ okayGraphics herm這聽起來很愚蠢,但我不確定如何去這樣做。你的回答後,我嘗試加入: herm,無法獲取代碼顯示在這裏,我會張貼在我原來的帖子。那麼,我嘗試添加,但我得到舞臺1120,和hexContainer 1120。如果我註釋掉stage.addChild(hexContainer);那麼我不會再獲得階段1120(即使我有stage.addChild(tempHex),這也會讓我十分困惑) –