[可绑定] 在动作脚本中是什么意思?

2024-04-18

[Bindable]
/**
* Display output of video device.
*/              
public var videoLocal : Video;

有谁知道?


[可绑定]是您可以在 Flex ActionScript 代码中使用的几个元标记之一。它可以应用于在任何范围内标记的属性或方法。它不能与静态类成员一起使用。

使用的关键是[可绑定]元标记是了解当您使用它时幕后发生的事情。本质上,使用数据绑定是添加事件侦听器和分派事件的一种速记方式。

有两种基本形式[可绑定]标签。第一个只是[可绑定]接下来是 var/property 声明。第二个是[可绑定(事件=“事件名称”)]后跟 var/property 声明、函数/方法声明或 getter/setter 声明的一半。

我将首先解释较长的符号,因为另一个符号基于相同的概念,但具有更多的简写。

当你使用[可绑定(事件=“事件名称”)]您本质上是在告诉编译器此 var/property/function/method(称为实例成员)“可”用作数据绑定的源。您还告诉它,当实例成员的值已失效/更改并且需要重新读取时,将调度“eventname”事件。
在这个较长的形式中,这就是您所做的一切。每当绑定订阅者中的值需要更新时,开发人员负责实际调度“eventname”事件。

使用数据绑定的真正效率来自于订阅方。您在 MXML 中看到的典型符号是值=“{instance.propertyName}”当您使用符号时{ }您告诉编译器执行以下操作:

  1. 创建一个事件监听器,监听可绑定元标记中指定的事件
  2. 在该事件监听器中重新读取instance.propertyName并更新该值

如果您使用较短的形式[可绑定],并且您在 property/var 之前添加标记,编译器会填充空白并添加一些附加功能以使属性可绑定。本质上你是在告诉编译器“添加使该属性可绑定所需的事件和方法”
现在思考编译器在幕后将做什么的方法是这样的。

  1. 制作你的 var 的私有版本
  2. 创建一个“事件”来触发绑定
  3. 创建一个具有原始 var 的范围和名称的 getter 函数,该函数在调用时返回 var 的私有版本。
  4. 使用原始 var 的范围和名称创建一个 setter 函数,该函数在调用时设置 var 的私有版本并分派触发事件。

本质上,编译器将为您完成大部分工作。

    [Bindable]
    public var xyz

相当于

    private var _xyz:String;

    [Bindable(event="updateXYZValue")]
    public function get xyz():String{
        return _xyz;
    }

    public function set xyz(newxyz:String):void{
        _xyz = newxyz;
        dispatchEvent(new Event("updateXYZValue"));
    }

其中唯一的功能差异是首先;

  1. 您不知道将调度以触发绑定的事件的名称
  2. 无法更新基础值without触发数据绑定

第二个示例还演示了一个特殊情况[可绑定]元标记。也就是说,当您将其应用于为同一变量名定义的 getter/setter 对时,您只需将其应用于其中一个或另一个,它将同时应用于两者。通常您应该将其设置在 getter 上。

您可以在函数/方法上使用任一表示法,但是如果您不指定事件,则永远不会触发绑定,因此如果您尝试绑定到函数,则应始终指定事件。还可以通过堆叠标签来指定多个触发事件。例如。

    [Bindable(event="metaDataChanged")]
    [Bindable(event="metaObjectUpdated")]
    public function readMyMetaData():MetaDataObject{
        var myMetaDataObject:MetaDataObject;
            .
            .
            .

        return myMetaDataObject;
    }

这假设你的班级的其他地方你会派发这个元数据改变事件或元对象更新当您想要触发绑定时发生事件。

另请注意,使用此表示法,您可以将任何实例成员的绑定绑定到该实例将分派的任何事件。甚至继承了您自己不生成的事件,例如 FrameEnter、OnChange 等......

数据绑定也可以在运行时设置和销毁。如果您对此感兴趣,请查看 mx.binding.utils 类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[可绑定] 在动作脚本中是什么意思? 的相关文章

  • 可定制/动态 SWF 生成

    想知道是否有人知道如何制作可定制的 Flash swf 文件 其中似乎有一个 swf 模板 用户可以输入一些更改 例如文本或图像 并接收包含更改的新编译的 swf 文件 一些例子 http flashfreezer com landingc
  • 将鼠标悬停在 DPAD 上有时会使角色朝一个方向无限移动

    我的游戏中有一个 DPAD 当玩家按住左 DPAD 时 如果他将触摸移动到向上 DPAD 并让我们走 玩家会继续向左方向前进 如果您按住 a 方向 则它也会起作用 假设向上继续按住 但移开向上 DPAD 有时您可能会继续朝该方向前进 我试图
  • 如何在 ActionScript 3.0 Flash IDE 中使用类似 ArrayCollection 的功能?

    我听说ArrayCollection在 Flex 上 我该如何使用ArrayCollection类似于 ActionScript 3 0 和 Flash IDE 中的功能 等效的 Flash IDE 类是fl data DataProvid
  • 如何让数据网格表现得像 ctrl 键处于活动状态?

    我希望我的数据网格默认的行为就像用户按住控制键一样 因此 当单击一个项目时 然后单击另一个项目 它们都是选择的一部分 再次单击它们会将它们从选择中删除 我已经有了allowMultipleSelection true但我似乎找不到任何可以执
  • 软漆桶填充:颜色平等

    我正在制作一个小应用程序 孩子们可以用颜色填充预设插图 我已经使用洪水填充算法成功实现了 MS paint 风格的油漆桶 然而 靠近图像元素边缘的像素未填充 因为线条是抗锯齿的 这是因为当前是否填充的条件是colourAtCurrentPi
  • ActionScript 中的普通对象和强类型对象哪个更快?

    So is public var user Object user firstName Bill user lastName Cosby 比我有像 User 这样的值对象慢吗 var user User new User user firs
  • 如何在不使用流媒体服务器的情况下实施 Adob​​e HTTP Streaming 规范

    从 Flash 10 1 开始 他们添加了通过appendBytes 方法将字节添加到 NetStream 对象中的功能 此处描述 http www bytearray org p 1689 增加这一功能的主要原因是 Adob e 终于支持
  • 对 RGB 值使用逻辑位移位

    当谈到按位逻辑时 我有点天真 我有一个可能是一个简单的问题 基本上 如果我有这个 是 ActionScript 但可以应用于多种语言 var color uint myObject color var red uint color gt g
  • Flex:是否可以停止远程调用?

    我搜索了很长时间 但仍然没有找到答案 在常见情况下 我们保留远程方法调用的令牌 例如 Flex gt Java 但是 如果客户端知道不再需要当前调用 如何停止服务器处理 使用asyncToken 是否可以停止远程调用 感谢您的回答 据我了解
  • 事件驱动的 CMS - 优点和缺点

    我正在尝试确定事件驱动的 CMS 的一些优点和缺点 事件驱动并不罕见 您可以在许多涉及客户端的脚本语言中看到它 例如 Actionscript javascript jquery 在事件及其响应发生在服务器上的 CMS 中怎么样 这种方法有
  • 静态 Actionscript 代码分析的可能性

    我想直观地看到类 函数和变量 属性 依赖关系 例如NDepend http www ndepend com Screenshots aspx 但适用于 ActionScript 2 或 AS3 代码 有什么计划或想法吗 Use doxyge
  • 鼠标悬停时的 Flash 事件

    有没有办法找出将鼠标移到 Flash 项目中的对象上时调用哪些方法 如果您尝试以下操作 您将能够跟踪对象上的每个侦听器 它将调用所有不带任何参数的侦听器 这将引发错误 如果你发现错误 你可以解析error getStackTrace查看听众
  • Flex:组合框控件的自定义项目渲染器截断文本

    我已经实现了一个自定义项目渲染器 我正在处理的 Flex 项目上将其与组合框一起使用 它显示每个项目的图标和一些文本 唯一的问题是 当文本较长时 菜单的宽度无法正确调整 并且文本在显示时会被截断 我尝试调整所有明显的属性来缓解这个问题 但没
  • Flash 功能中的冲突检测? (命中测试对象)

    你好 所以我最近一直在使用hitTestObject检测我正在制作的 Android 应用程序中的碰撞 经过一番测试后 我意识到游戏正在检测 假 碰撞 我的意思是它正在检测碰撞not当物体的像素接触时 但是 经过一些研究后 我发现boxes
  • 如何在 ActionScript 3 中从类实例获取 Class 对象?

    如何获取 actionscript 类的实例Class来自该类的一个实例 在 Python 中 这将是x class 在爪哇语中 x getClass 我知道某些可怕的黑客行为 http actionscript org forums sh
  • Actionscript 3 和动态蒙版

    我有一个容器 MovieClip 用作我需要遮盖的内容区域 当我使用形状在此容器内创建蒙版时 我似乎无法与我在此处创建的其他容器的内容进行交互 例如按钮等 这就是我在代码中所做的 我省略了所有导入等 class MyContainer ex
  • 无尽重复滚动背景

    我遇到了 AS3 和 AIR 的问题 我正在为带有飞机的智能手机开发一款横向卷轴游戏 我使用不同的背景作为图层 首先 我使用 GPU 并且仅使用位图 质量设置为低 因此 性能设置均适合智能手机使用 我使用绘图 API 将它们放入一个矩形中
  • NetStream.appendBytes

    我有一个连接到 Flash Media Server 的 netConnection 我正在尝试使用 Flash Player 10 1 中的新appendBytes 函数将本地FLV 文件流式传输到FMS 但是我遇到了问题 我在网上获取的
  • Actionscript 内存管理、垃圾收集

    这个博客 http blogagic com 163 flex memory management and memory leaks varref 和其他人 指出 在清理对象时 您应该在 dispose 方法中将对象引用设置为 null 但
  • 打开 PDF 或文件夹

    我尝试打开在 Flash Player 中运行的 swf 应用程序中通过鼠标单击触发的 PDF 或文件夹 在查找器 资源管理器中 通过 urlRequest 打开 PDF 和navigateToUrl 总是打开浏览器 我读到this htt

随机推荐