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...");
} } }
答案 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];