创建 Greetings 应用程序

下列步骤使用 Flash 创作工具创建 FLA 文件、将组件放置在"舞台"上、向"时间轴"添加 ActionScript 代码,从而创建 Greetings 应用程序。

在 FLA 文件中创建 Greetings 应用程序:

  1. 选择"文件">"新建"。
  2. 在"新建文档"对话框中,选择"Flash 文件 (ActionScript 3.0)",然后单击"确定"。

    打开一个新的 Flash 窗口。

  3. 选择"文件">"保存",将 Flash 文件命名为 Greetings.fla,然后单击"保存"按钮。
  4. 在 Flash 组件面板中,选择一个 TextArea 组件,并将其拖到"舞台"上。
  5. 在"属性"窗口中,选择"舞台"上的 TextArea 后,请键入 aTa 作为实例名,然后输入下列信息:
    • 输入 230 作为 W 值(宽)。
    • 输入 44 作为 H 值(高)。
    • 输入 165 作为 X 值(水平位置)。
    • 输入 57 作为 Y 值(垂直位置)。
    • 在"参数"选项卡上输入"Hello World!"作为文本参数。
  6. 将 ColorPicker 组件拖到舞台上,放在 TextArea 的左侧,并为其指定实例名称"txtCp"。在"属性"检查器中输入下列信息:
    • 输入 96 作为 X 值。
    • 输入 72 作为 Y 值。
  7. 将三个 RadioButton 组件拖到"舞台"上,分别为组件指定实例名称 smallRblargerRblargestRb。在"属性"检查器中为它们输入下列信息:
    • 为每个组件输入 100 作为 W 值,输入 22 作为 H 值。
    • 输入 155 作为 X 值。
    • 输入 120 作为 smallRb 的 Y 值,输入 148 作为 largerRb 的 Y 值,输入 175 作为 largestRb 的 Y 值。
    • 输入 fontRbGrp 作为每个组件的 groupName 参数。
    • 在组件的"参数"选项卡输入 SmallLargerLargest 作为标签。
  8. 将一个 ComboBox 拖到"舞台"上,并为其指定实例名称 msgCb。在"属性"检查器中为其输入下列信息:
    • 输入 130 作为 W 值。
    • 输入 265 作为 X 值。
    • 输入 120 作为 Y 值。
    • 在"参数"选项卡上,输入"Greetings"作为提示参数。
    • 双击 dataProvider 参数的文本字段以打开"值"对话框。
    • 单击加号,然后用"Hello World!"替换标签值
    • 重复上一步骤,添加 Have a nice day!Top of the Morning! 标签值
    • 单击"确定"以关闭"值"对话框。
  9. 保存该文件。
  10. 如果尚未打开,请通过按 F9 或从"窗口"菜单选择"动作"以打开"动作"面板。单击主时间轴的第 1 帧,然后在"动作"面板中输入下面的代码:
    import flash.events.Event;
    import fl.events.ComponentEvent;
    import fl.events.ColorPickerEvent;
    import fl.controls.RadioButtonGroup;
    
    var rbGrp:RadioButtonGroup = RadioButtonGroup.getGroup("fontRbGrp");
    rbGrp.addEventListener(MouseEvent.CLICK, rbHandler);
    txtCp.addEventListener(ColorPickerEvent.CHANGE,cpHandler);
    msgCb.addEventListener(Event.CHANGE, cbHandler);
    

    前三行导入应用程序使用的事件类。用户与组件之一进行交互时,会发生事件。接下来的五行为应用程序希望侦听的事件注册事件处理函数。用户单击 RadioButton 时发生 click 事件。用户在 ColorPicker 中选择其它颜色时发生 change 事件。用户从 ComboBox 的下拉列表选择其它问候时发生 change 事件。

    第四行导入 RadioButtonGroup 类以便应用程序可以为一组 RadioButton 分配事件侦听器,而不是分别为每个按钮分配侦听器。

  11. 将下面一行代码添加到"动作"面板以创建 tf TextFormat 对象,应用程序使用此对象更改 TextArea 中文本的 sizecolor 样式属性。
    var tf:TextFormat = new TextFormat();
    
  12. 添加下列代码以创建 rbHandler 事件处理函数。在用户单击其中一个 RadioButton 组件时,此函数处理 click 事件。
    function rbHandler(event:MouseEvent):void {
        switch(event.target.selection.name) {
            case "smallRb":
                tf.size = 14;
                break;
            case "largerRb":
                tf.size = 18;
                break;
            case "largestRb":
                tf.size = 24;
                break;
            }
            aTa.setStyle("textFormat", tf);
    }
    

    此函数使用 switch 语句检查 event 对象的 target 属性,以确定哪个 RadioButton 触发了事件。currentTarget 属性包含触发事件的对象名称。根据用户单击的是哪个 RadioButton,应用程序将 TextArea 中文本的大小更改为 14、18 或 24 磅。

  13. 添加下列代码以实现 cpHandler() 函数,此函数处理 ColorPicker 中的值的更改:
    function cpHandler(event:ColorPickerEvent):void {
        tf.color = event.target.selectedColor;
        aTa.setStyle("textFormat", tf);
    }
    

    此函数将 tf TextFormat 对象的 color 属性设置为 ColorPicker 中选定的颜色,然后调用 setStyle() 将此颜色应用到 aTa TextArea 实例中的文本。

  14. 添加下列代码以实现 cbHandler() 函数,此函数处理 ComboBox 中选择的更改:
    function cbHandler(event:Event):void {
        aTa.text = event.target.selectedItem.label;
    }
    

    此函数只是将 TextArea 中的文本替换为 ComboBox 中选择的文本 (event.target.selectedItem.label)。

  15. 选择"控制">"测试影片"或按 Ctrl+Enter 编译代码,然后测试 Greetings 应用程序。

下面的部分向您演示如何使用外部的 ActionScript 类,以及其"库"中只有必需组件的 FLA 文件构建相同的应用程序。

使用外部类文件创建 Greetings2 应用程序:

  1. 选择"文件">"新建"。
  2. 在"新建文档"对话框中,选择"Flash 文件 (ActionScript 3.0)",然后单击"确定"。

    打开一个新的 Flash 窗口。

  3. 选择"文件">"保存",将 Flash 文件命名为"Greetings2.fla",然后单击"保存"按钮。
  4. 将下列各个组件从"组件"面板拖到"库"中:
    • ColorPicker
    • ComboBox
    • RadioButton
    • TextArea

    因为编译的 SWF 文件会使用所有资源,所以您需要将资源都添加到"库"中。将组件拖到"库"面板的底部。在您将这些组件添加到"库"中时,会自动添加其它资源(List、TextInput 和 UIScrollBox)。

  5. 在"属性"窗口中,为"文档类"键入 Greetings2

    如果 Flash 显示一个"无法找到该文档类的定义"的警告,请忽略。您将按下面步骤定义 Greetings2 类。此类定义应用程序的主要功能。

  6. 保存 Greetings2.fla 文件。
  7. 选择"文件">"新建"。
  8. 在"新建文档"对话框中,选择"ActionScript 文件",然后单击"确定"。

    打开一个新的脚本窗口。

  9. 在脚本窗口中添加下列代码:
    package {
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.text.TextFormat;
        import fl.events.ComponentEvent;
        import fl.events.ColorPickerEvent;
        import fl.controls.ColorPicker;
        import fl.controls.ComboBox;
        import fl.controls.RadioButtonGroup;
        import fl.controls.RadioButton;
        import fl.controls.TextArea;
        public class Greetings2 extends Sprite {
            private var aTa:TextArea;
            private var msgCb:ComboBox;
            private var smallRb:RadioButton;
            private var largerRb:RadioButton;
            private var largestRb:RadioButton;
            private var rbGrp:RadioButtonGroup;
            private var txtCp:ColorPicker;
            private var tf:TextFormat = new TextFormat();
            public function Greetings2() {    
    

    脚本定义一个名为 Greetings2 的 ActionScript 3.0 类。脚本进行以下操作:

    • 导入我们将要在文件中使用的类。通常情况下,您可以在代码中引用其它类时添加这些导入语句,但为了简便起见,此示例将所有这些语句在一个步骤中导入。
    • 声明变量以表示我们将要添加到代码中的组件对象的不同类型。另一个变量创建 tf TextFormat 对象。
    • 为类定义构造函数 Greetings2()。我们将这些行添加到此函数中,并按下列步骤向类添加其它方法。
  10. 选择"文件">"保存",将文件命名为"Greetings2.as",然后单击"保存"按钮。
  11. Greeting2() 函数添加下列代码行:
        createUI();
        setUpHandlers();
    }
    

    此函数现在应该如下所示:

    public function Greetings2() {
        createUI();
        setUpHandlers();
    }
    
  12. Greeting2() 方法的右括号后添加下列代码行:
    private function createUI() {
        bldTxtArea();
        bldColorPicker();
        bldComboBox();
        bldRadioButtons();
    }
    private function bldTxtArea() {
        aTa = new TextArea();
        aTa.setSize(230, 44);
        aTa.text = "Hello World!";
        aTa.move(165, 57);
        addChild(aTa);
    }
    private function bldColorPicker() {
        txtCp = new ColorPicker();
        txtCp.move(96, 72);
        addChild(txtCp);
    }
    private function bldComboBox() {
        msgCb = new ComboBox();
        msgCb.width = 130;
        msgCb.move(265, 120);
        msgCb.prompt = "Greetings";
        msgCb.addItem({data:"Hello.", label:"English"});            
        msgCb.addItem({data:"Bonjour.", label:"Français"});            
        msgCb.addItem({data:"¡Hola!", label:"Español"});            
        addChild(msgCb);
    }
    private function bldRadioButtons() {
        rbGrp = new RadioButtonGroup("fontRbGrp");
        smallRb = new RadioButton();
        smallRb.setSize(100, 22);
        smallRb.move(155, 120);
        smallRb.group = rbGrp; //"fontRbGrp";
        smallRb.label = "Small";
        smallRb.name = "smallRb";
        addChild(smallRb);
        largerRb = new RadioButton();
        largerRb.setSize(100, 22);
        largerRb.move(155, 148);
        largerRb.group = rbGrp;
        largerRb.label = "Larger";
        largerRb.name = "largerRb";
        addChild(largerRb);
        largestRb = new RadioButton();
        largestRb.setSize(100, 22);
        largestRb.move(155, 175);
        largestRb.group = rbGrp;
        largestRb.label = "Largest";
        largestRb.name = "largestRb";
        addChild(largestRb);
    }
    

    这些行执行下列操作:

    • 实例化应用程序中使用的组件。
    • 设置每个组件的大小、位置和属性。
    • 使用 addChild() 方法将各个组件添加到舞台上。
  13. bldRadioButtons() 方法的右括号后,添加 setUpHandlers() 方法的下列代码:
    private function setUpHandlers():void {
        rbGrp.addEventListener(MouseEvent.CLICK, rbHandler);
        txtCp.addEventListener(ColorPickerEvent.CHANGE,cpHandler);
        msgCb.addEventListener(Event.CHANGE, cbHandler);
    }
    private function rbHandler(event:MouseEvent):void {
        switch(event.target.selection.name) {
            case "smallRb":
                tf.size = 14;
                break;
            case "largerRb":
                tf.size = 18;
                break;
            case "largestRb":
                tf.size = 24;
                break;
        }
        aTa.setStyle("textFormat", tf);
    }
    private function cpHandler(event:ColorPickerEvent):void {
        tf.color = event.target.selectedColor;
        aTa.setStyle("textFormat", tf);
    }
    private function cbHandler(event:Event):void {
        aTa.text = event.target.selectedItem.data;
    }
    }
    }
    

    这些函数定义组件的事件侦听器。

  14. 选择"文件">"保存"以保存文件。
  15. 选择"控制">"测试影片"或按 Ctrl+Enter 编译代码,然后测试 Greetings2 应用程序。