我使用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
答案 0 :(得分: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
}
}
}
答案 1 :(得分:12)
我们使用它将自定义事件绑定到我们的自定义MXML组件。此标记允许您从MXML引用它。见documentation:
[Event(name="enableChanged", type="flash.events.Event")]
class ModalText extends TextArea {
...
}
<MyComp:ModalText enableChanged="handleEnableChangeEvent(event);"/>
但是,如果您尝试引用未使用事件metatag声明的mxml标记上的事件,编译器将会抱怨。