2012-03-14 91 views
0

新的Actionscript,OOP,這個論壇等!我有一個很大的項目,我正在努力,非常文字和按鈕沉重。我想在文本類中創建一個字符串數組,我可以通過主文檔類訪問它。然後,我將能夠使用數組中的項填充文本字段。這樣做的目的是爲了避免在我的主文檔中出現大量文字......但我甚至無法讓我的測試工作。編譯器告訴我數組(txt1)未定義。首先這裏是我的陣列碼:AS3:如何從另一個類訪問屬性/方法?

//text array class:format5000 
    package { 

    import flash.display.MovieClip; 
    import flash.text.*; 
    import flash.events.MouseEvent; 

    public class format5000 extends MovieClip { 

     private var txt1:Array = []; 

    public function format5000() { 
     // constructor code 
     txt1[0] = "This is the first txt string"; 
     trace("format loaded"); 
     trace(txt1[0]); 
} } } 

而這裏的代碼主要DOC:

//main doc class: text5001 
package { 

    import flash.display.MovieClip; 
    import flash.display.*; 
    import flash.events.*; 
    import flash.text.*; 


    public class text5001 extends MovieClip{ 

     private var myText:TextField; 
     private var theformat:format5000; 

    public function text5001() { 
     // constructor code 

     theformat = new format5000(); 

     addChild(theformat); 
     myText = new TextField(); 
     myText.text = txt1[0]; 
     myText.x = 50; 
     myText.y = 50; 
     addChild(myText); 
     trace("text loading..."); 
} } } 

回答

-1

歡迎堆棧!這個變種應該是公開的,所以其他類可以訪問它。

private var txt1:Array = []; 

應該

public var txt1:Array = []; 

所以你的代碼行是:

myText.text = theformat.txt1[0]; 
+0

我不知道從何處取得'root',代碼將是'theformat.txt1 [0 ]' – jhocking 2012-03-14 03:45:17

+0

hm,它看起來像被編輯過,但沒有關於編輯的通知 – jhocking 2012-03-14 11:36:10

+0

我正在編輯,因爲你打了下來;) – crooksy88 2012-03-14 12:34:19

1

注意,在變量前面的關鍵字private?這意味着變量只能在對象內運行,不能在對象外訪問。

你可以聲明變量爲public代替,然後你可以用點表示法訪問它,像這樣:theformat.txt1[0]

然而,公共變量是一種好的做法,所以你可能會更好重組你的代碼這樣數組就不需要在它存在的對象之外訪問。我的意思是,你沒有解釋format5000類是什麼,我將在format5000中創建一個方法createTextfield(),然後從主類中調用該方法。

所以在format5000我會寫

public function createTextField(index:int):TextField { 
    var myText:TextField = new TextField(); 
    myText.text = txt1[index]; 
    return myText; 
} 

,然後在text5001

theformat = new format5000(); 
myText = theformat.createTextField(0); 
myText.x = 50; 
myText.y = 50; 
addChild(myText); 
+0

天才!我非常感激。出於好奇,我試圖改變訪問「公共」,這工作。但是我想從一開始就練習最佳實踐,所以我接受了您的建議並在format5000類中創建了一個函數。感謝你的寶貴時間! – 2012-03-15 00:38:00

相關問題