0

我有小问题,

也就是说,我已经创建了三个 MovieClip

我给了每个 MC 链接 A1、A2、A3。

在舞台上我放置了代码:

var a1:A1 = new A1();
var a2:A2 = new A2();

addChild(a1);
a1.addChild(a2);

在 A2 中我写道:

var a3:A3 = new A3();
addChild(a3);
trace(a3.t);

在 A3 中我放置了:

var t:String = "test";

跟踪返回我“空”为什么?

4

1 回答 1

2

如果不知道你的类文件是什么样子或者你把那行声明和赋值给 t 的确切位置,我不能肯定地说。

ta 是 A3 类的属性吗?

这意味着您在该类的属性声明中拥有它:

public var t:String = "test";

如果不是,则您正在处理范围问题,因为 t 在您声明它的位置之外没有范围。

例如,如果您的构造函数中有这一行:

var t:String = "test";

它的范围仅限于您的构造函数。

你需要做的是让你的 A3 类的公共财产。

这是一个例子:

package
{
     public class A3 extends MovieClip
     {
         // declare as class property
         public var t:String;

         public function A3()
         {
              // assign value to class property t
              t = "Test";
         }

         public function doSomething():void
         {
              // this local variable is not accessible outside this function
              var someVariable:String = "test";
         }


     }
}

正如评论者所指出的,如果您选择不将属性声明为公共/私有,则它默认为私有,因此在类外不可见。您不能在方法中将变量声明为公共/私有变量。在方法中声明的任何变量都限定在该方法的范围内——局部变量——并且只能在该方法中访问。

于 2012-12-19T22:30:47.740 回答