更改子组件中的外观属性

如果组件不直接支持外观变量,您可以创建该组件的子类并替换其外观。例如,ComboBox 组件不直接支持设置其下拉列表的外观,因为 ComboBox 使用 List 组件作为其下拉列表。

如果一个组件由若干个子组件构成,则《ActionScript 2.0 组件语言参考》中该组件的条目中会标识出这些子组件。

为子组件设置外观:

  1. 按照编辑文档中的组件外观中的步骤操作,但编辑的是滚动条外观。对于本示例,编辑 ScrollDownArrowDown 外观并为它指定新名称 MyScrollDownArrowDown
  2. 选择"文件">"新建",创建一个 Flash 文档。
  3. 选择"文件">"保存",并为该文件指定唯一的名称,如 MyComboTest.fla
  4. 将 MyScrollDownArrowDown 从上面的主题库拖到 MyComboTest.fla 的库中。

    此操作会将元件添加到库中,但不会在舞台上显示该零件。

  5. 选择"插入">"新建元件",并为该元件指定唯一的名称,如 MyComboBox
  6. 选中"为 ActionScript 导出"复选框并单击"确定"。

    "在第一帧导出"应自动选中,如果没有,请选中它。

  7. 在"动作"面板中,在 MyComboBox 元件的第 1 帧上输入以下代码:
    #initclip 10
        import MyComboBox
        Object.registerClass("ComboBox", MyComboBox);
    #endinitclip
    
  8. 编辑完该元件之后,单击舞台顶部编辑栏左侧的"返回"按钮,返回到文档编辑模式。
  9. 将 ComboBox 组件拖动到舞台上。
  10. 在"属性"检查器中,输入足够多的 Label 参数,以便显示垂直滚动条。
  11. 选择"文件">"保存"。
  12. 选择"文件">"新建",创建一个新的 ActionScript 文件。
  13. 输入以下代码:
    import mx.controls.ComboBox
    import mx.controls.scrollClasses.ScrollBar
    class MyComboBox extends ComboBox{
        function getDropdown():Object{
            var oldName = ScrollBar.prototype.downArrowDownName;
            ScrollBar.prototype.downArrowDownName = "MyScrollDownArrowDown";
            var r = super.getDropdown();
            ScrollBar.prototype.downArrowDownName = oldName;
            return r;
        }
    }
    
  14. 选择"文件">"保存",将该文件保存为 MyComboBox.as
  15. 返回到文件 MyComboTest.fla。
  16. 单击舞台上的空白区域,然后在"属性"检查器中,单击"发布设置"按钮。
  17. 单击"ActionScript 版本设置"按钮。
  18. 单击"添加新路径"(+) 按钮添加新的类路径,然后选择"目标"按钮浏览到 MyComboBox.as 文件在硬盘上的位置。
  19. 选择"控制">"测试影片"。