3

迁移到 Flash CC 时,我的 flash 项目中出现以下问题。

考虑这个类定义:

public class Test extends MovieClip {
  [Inspectable(type="String", defaultValue="val")]
  public var param :String;

  public function Test() {
     trace(param);
  }
}   

我有一个符号“符号 1”,它(通过库面板属性)链接到类 Test 并且(通过组件定义)也设置为类 Test,并且此对话框显示参数“param”和值“瓦尔”。我在场景中有一个符号 1 的实例。正如预期的那样,参数“param”出现在此实例的属性中,值为“val”。

唯一的问题是,在运行时,参数“param”的值等于 null,正如在执行 classes 构造函数期间所确认的那样,它输出“null”。

有谁知道为什么会这样?

4

1 回答 1

3

Flash 需要 Inspectable 标记来填充组件属性面板,以便手动设置值。这些参数(默认和用户输入)在实例化时不可用,但它们仅在下一帧可用。为了在实例化时具有默认值,您还必须在变量本身上设置默认值。

  [Inspectable(type="String", defaultValue="val")]
  public var param :String = "val";

此外,在您疯狂访问使用属性检查器插入的值之前,请记住在访问这些值之前添加一个输入帧事件。

我通常在我的组件中执行的操作: 1 - 在可检查和变量中填充默认值 2 - 在实例化时,如果接收到参数对象,那么我知道它已在代码中实例化并且值在参数对象内 3 - 如果参数对象是未收到,然后在时间轴上直观地完成实例化,因此我在下一帧访问属性

于 2015-09-14T13:14:56.383 回答