自定义格式程序范例

以下示例演示如何创建自定义格式程序类,然后使用 ActionScript 将其应用到两个组件之间的绑定。在此示例中,NumericStepper 组件的当前值(其 value 属性)被绑定到 TextInput 组件的当前值(其 text 属性)。在将 NumericStepper 组件的当前数字值(如 1、2 或 3)分配给 TextInput 组件之前,自定义格式程序类会将该值格式化为其对等的英文单词(如"one"、"two"或"three")。

要创建和使用自定义格式程序:

  1. 在 Flash 中,创建一个新的 ActionScript 文件。
  2. 在文件中添加以下代码:
    // NumberFormatter.as
    class NumberFormatter extends mx.data.binding.CustomFormatter {
        // 格式化数字,返回字符串
        function format(rawValue) {
            var returnValue;
            var strArray = new Array('one', 'two', 'three');
            var numArray = new Array(1, 2, 3);
            returnValue = 0;
            for (var i = 0; i<strArray.length; i++) {
                if (rawValue == numArray[i]) {
                    returnValue = strArray[i];
                    break;
                }
            }
            return returnValue;
        }    // 转换格式化后的值,返回原始值
        function unformat(formattedValue) {
            var returnValue;
            var strArray = new Array('one', 'two', 'three');
            var numArray = new Array(1, 2, 3);
            returnValue = "invalid";
            for (var i = 0; i<strArray.length; i++) {
                if (formattedValue == strArray[i]) {
                    returnValue = numArray[i];
                    break;
                }
            }
            return returnValue;
        }
    }
    
  3. 将 ActionScript 文件另存为 NumberFormatter.as。
  4. 创建一个新的 Flash (FLA) 文件。
  5. 在"组件"面板中将 TextInput 组件拖动到舞台上,并将其命名为 textInput。然后将一个 NumericStepper 组件拖到舞台上,并将其命名为 stepper
  6. 打开时间轴并选择图层 1 上的第一帧。
  7. 在"动作"面板中,将下面的代码添加到该面板中:
    import mx.data.binding.*;
    var x:NumberFormatter;
    var customBinding = new Binding({component:stepper, property:"value", event:"change"}, {component:textInput, property:"text", event:"enter,change"}, {cls:mx.data.formatters.Custom, settings:{classname:"NumberFormatter"}});
    

    第二行代码 (var x:NumberFormatter) 确保编译后的 SWF 文件中包含自定义格式程序类的字节代码。

  8. 选择"窗口">"公用库">"类"以打开"类"库。
  9. 选择"窗口">"库"来打开文档的库。
  10. 将 DataBindingClasses 从"类"库拖动到文档的库中。

    这将使文档可以使用数据绑定运行时类。有关更多信息,请参见使数据绑定类在运行时可用(仅限 Flash Professional)

  11. 将 FLA 文件保存到包含 NumberFormatter.as 的同一文件夹中。
  12. 测试文件("控制">"测试影片")。

    单击 NumericStepper 组件上的按钮,并观看 TextInput 组件的内容发生更新。

CustomFormatter 类的方法摘要

下表列出了 CustomFormatter 类的方法。

方法

说明

CustomFormatter.format()

从原始数据类型转换为新的对象。

CustomFormatter.unformat()

从字符串(或其它数据类型)转换为原始数据类型。