gpt4 book ai didi

apache-flex - ActionScript 中的绑定(bind)如何工作?

转载 作者:行者123 更新时间:2023-12-03 09:56:17 25 4
gpt4 key购买 nike

据我了解,绑定(bind)到 ActionScript 中的 var 是通过更改 var 时自动触发的事件来执行的。我对此有几个问题:

  • 如果类没有显式扩展 EventDispatcher 会发生什么?编译器中是否存在某种魔法,本质上使该类成为 EventDispatcher?
  • 绑定(bind)到静态变量如何工作?类中是否添加了某种隐式静态 addEventListener() 函数?
  • 我注意到您可以将 [Bindable] 放在静态变量上,但不能放在静态函数上,这是为什么呢?

  • 编辑:

    感谢 Christophe Herreman 的启发性回答。但是,我从上面的问题中得到了一些后续。我想知道是否有人可以为我填补空白(我试图将这些问题编号为 4、5、6,但由于某种原因它们出现了 1、2、3!)
  • 我在编译器中添加了 -keep 选项并查看了生成的绑定(bind)代码。谁能解释如何应用此代码?编译器似乎为每个类生成了一个名为 BindableProperty 的类,其中包含 getter 和 setter。这如何融入我写的类(class)中?该功能看起来有点像 C# 中的部分类 - 这是专门的幕后编译器功能,还是我可以自己使用的功能?
  • BindableProperty类依然没有显式实现EventDispatcher,生成的类是如何实现事件调度的呢?
  • 在问题 3 中,我询问了绑定(bind)到静态函数的问题,但我实际上是指静态 getter 和 setter 函数。这似乎是不允许的。
  • 最佳答案

    绑定(bind)确实通过事件分派(dispatch)起作用。通过将 -keep 标志添加到编译器设置,您可以从生成的 Actionscript 代码中学到很多东西。

    我会尽力回答你的问题。

  • 编译器将获取 [Bindable] 元数据标记,并为您标记为可绑定(bind)的每个属性创建一个 getter 和 setter。 getter 只会返回属性的值。 setter 将检查新值是否与原始值不同,如果不同,将调度 PropertyChange 事件。
  • 基本上与实例属性相同,只是现在创建了静态 getter 和 setter。此外,还创建了一个 mx.binding.StaticPropertyWatcher 来观察静态属性的变化。
  • 绑定(bind)到静态方法时,您会收到以下警告:“[Bindable] 在应用于不是 getter 或 setter 的函数时需要事件名称参数。”描述几乎说明了一切。由于您没有专门为此方法触发的“propertyChange”事件,因此您必须自己调度一个自定义事件。那就是 [Bindable(event="customEvent")] ,然后从你的类中的某个地方分派(dispatch)那个事件。
  • 关于apache-flex - ActionScript 中的绑定(bind)如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/320499/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com