13

我使用 FlashDevelop3 R2 和 Flex 3.3 SDK 进行开发,在很多情况下我必须使用嵌入元数据标签:

  [Embed(source="path/to/file")]
  private var Asset:Class;

我很好理解以上所有内容,我很感谢它的存在,因为我不喜欢经常打开 Flash IDE。

最近在翻阅其他作者课程的时候,发现了一个有趣的元数据标签,我看不懂:

[Event(name="", type="")]

我还没有看到我需要这个的情况,而且我真的不明白它的用途。

提前感谢您的帮助。

Brian Hodge
blog.hodgedev.com hodgedev.com

4

2 回答 2

20

这些[Event(name, type)]声明描述了类实例可能分派的事件。

它们实际上对代码完成很有用- 例如,当您键入: 时mySprite.addEventListener(,您的代码编辑器(Flex Builder 或 FlashDevelop)将显示此对象可以调度的有意义的事件列表。

因此,您可以在代码中添加这些声明,并从更丰富的代码完成中受益。

另请注意,这适用于自定义事件类(请参阅 FlashDevelop 的新事件类模板)。

package mycomp {
    import flash.events.Event;

    public class MyEvent extends Event {
         public const SOME_EVENT:String = "someEvent";
         // required Event type declarations
    }
}

package mycomp {
     [Event(name="someEvent", type="mycomp.MyEvent")]
     public class MyComp extends Sprite {
     }
}

package myproject {
     import mycomp.MyComp;

     public class MyProject {
          function MyProject() {
                var mc:MyComp = new MyComp();
                mc.addEventLister( //completes: SOME_EVENT + Sprite events
          }
     }
}
于 2009-05-09T13:20:59.250 回答
12

我们使用它将自定义事件绑定到我们的自定义 MXML 组件。此标记允许您从 MXML 中引用它。请参阅文档

[Event(name="enableChanged", type="flash.events.Event")]

class ModalText extends TextArea { ... }

<MyComp:ModalText enableChanged="handleEnableChangeEvent(event);"/>

但是,如果您尝试引用未使用事件元标记声明的 mxml 标记上的事件,编译器会报错。

于 2009-03-23T22:18:23.370 回答