【问题标题】:Trouble with three movieclips AS3三个movieclips AS3的问题
【发布时间】:2012-12-19 21:37:02
【问题描述】:

我有小问题,

也就是说,我已经创建了三个电影剪辑

我给每个 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”,为什么?

【问题讨论】:

  • 当您说“在 A2 中”和“在 A3 中”时,您实际上是为这些类制作了 .as 文件还是只是将该代码放入影片剪辑的时间轴中?

标签: actionscript-3


【解决方案1】:

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

是不是 A3 类的属性?

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

public var t:String = "test";

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

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

var t:String = "test";

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

您需要做的是使 t 成为 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";
         }


     }
}

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

【讨论】:

  • 没有公共范围的 var t 永远不会在实例之外可用(在某些情况下,由完全相同的类的实例除外)。
  • 这就是为什么我说“t的范围仅限于你的构造函数。”,在那一行之后。
  • 即使不在构造函数中,范围也不会在实例外可见。
  • 我举了一个范围的例子。如果它是在我指定的地方声明的,它可以在类外访问。但是,是的,如果它是该类中任何方法的局部变量,那么您是正确的,那么它在实例之外是不可访问的。为了清楚起见,我会做广告。
  • 即使在方法之外,如果不将其声明为公开,则它不是公开的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多