麻烦三个动画片段AS3

时间:2012-12-19 21:37:02

标签: actionscript-3

我没什么问题,

即,我已经创建了三个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";

Trace给我“null”为什么?

1 个答案:

答案 0 :(得分:2)

我不能肯定地说,不知道你的类文件是什么样的,或者你确切地说该行声明并将值赋给t。

是A3类的属性吗?

意思是你在该类的属性声明中有它:

public var t:String = "test";

如果没有,您正在处理范围问题,因为在您声明范围之外没有范围。

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

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";
         }


     }
}

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