当前位置:  开发笔记 > 编程语言 > 正文

Flex/AS3元数据标签在接口定义中的处理方式是否与类定义不同?

如何解决《Flex/AS3元数据标签在接口定义中的处理方式是否与类定义不同?》经验,为你挑选了1个好方法。

如果我在界面前使用元数据标签,那是否与类前面的相同?我也可以这样做

[Event(name="fooUpdate", type="com.acme.events.FooEvent")
public interface IFoozer extends IEventDispatcher
{
}

// ... now omit that metadata in the implementations ...

public class Foozer extends EventDispatcher implements IFoozer
{
    public function set bar(b:Bar):void
    {
        this.dispatchEvent(new FooEvent(FooEvent.FOO_UPDATE));
    }
}

// ... and expect it to be known in MXML ...


  

或者,同样地,用[Bindable]



1> back2dos..:

是和否...对于[Event]是......但[Bindable]不仅仅是元数据标签... [Bindable](没有参数!!)指示编译器生成AS3代码,PropertyChangeEvent如果设置属性,将确保调度a (你可以看看如果你让mxmlc保持生成AS3代码)...

另外,对于[Embed]情况并非如此([Embed]必须后跟一个变量.接口不能有变量)...你总是能够通过flash.utils::describeType... 检索元数据这是非常不一致的,因为一些元数据标签实际上只提供了元数据编译到输出中,一些元数据指示编译器真正采取行动......再一次,一些标签提供的元数据被flex框架大量使用,它们成为MXML中的语言特性(as [Event])...但是它们不是在AS3中...但AS3对VM上发生的事情非常接近,而MXML和Flex Framework都只是模糊地相关...这也是ActionScript类和MXML组件非常可怕地互操作的原因(你可能已经注意到MXML没有接口,执行流(以及时间)的概念,而AS3没有事件或绑定的概念(在MXML中是"本机",但是建立在AS3之上,使用一些元数据和flash.events包,看起来非常n 在MXML中使用ice,但在AS3中进行了大量的调用和实例化))...

你想要什么,可能不会工作...我个人认为,更多的是允许接口拥有元数据的缺陷...几乎所有元数据都是在运行时使用...在运行时,每个对象都有它的自己的类和接口是次要的内省/反思......

所以回到旧学校的短语:一个接口需要行为,一个类提供实现 ...... [Event(name="fooUpdate", type="com.acme.events.FooEvent")]是纯元数据......元数据是AS3世界中的实现,因为这不需要任何人做任何事情(你可能也是如此)只是写[Bar(foo="123")])...它是一个放在一个类顶部的标记,当且仅当该类在其实现中的某个地方有这样的行:this.dispatchEvent(new FooEvent(FooEvent.FOO_UPDATE));...你有点想说的是,任何IFoozer实现都会发送FooEvent.FOO_UPDATE...这是编译器无法提供的保证,因为它不检查元数据与实现...

希望有帮助......

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有