AS3:如何从另一个类访问属性/方法?

时间:2012-03-14 02:47:08

标签: actionscript-3 oop class

ActionScript,OOP,此论坛等新手!!我有一个大项目,我正在努力,非常文本和按钮沉重。我想在文本类中创建一个字符串数组,我可以使用主文档类访问它。然后,我将能够使用数组中的项填充文本字段。这样做的目的是避免在我的主文档中包含大量文本...但我甚至无法让我的测试工作。编译器告诉我数组(txt1)是未定义的。首先,这是我的数组代码:

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

这是主要文档的代码:

 //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..."); 
} } }

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:-1)

欢迎来到Stack!。这个var应该是公共的,所以其他类可以访问它。

private var txt1:Array = [];

应该是

public var txt1:Array = [];

所以你的代码行是:

myText.text = theformat.txt1[0];