将经过编辑的外观应用到子组件

某些情况下,您可能要修改组件中某个子组件的外观,但无法直接访问外观属性(例如,无法直接修改 List 组件中的滚动条外观)。使用以下代码,您可以访问滚动条外观。在运行此代码之后创建的所有滚动条也都会具有新外观。

如果组件中包含子组件,则组件字典的组件条目中会标明这些子组件。

若要将新外观应用到子组件,请执行下列操作:

  1. 执行编辑组件外观中的步骤,但编辑滚动条外观。在此范例中,请编辑 ScrollDownArrowDown 外观并为它指定新名称 MyScrollDownArrowDown
  2. 选择“文件”>“新建”,创建新的 Flash 文档。
  3. 选择“文件”>“保存”,并为其指定诸如 SubcomponentProject.fla 的唯一名称。
  4. 双击“组件”面板中的 List 组件,将它添加到舞台中,然后按 Backspace 键,将它从舞台中删除。

    这样会将该组件添加到“库”面板,但不会在文档中显示该组件。 

  5. 将 MyScrollDownArrowDown 和任何编辑过的其他元件从 MyTheme.fla 拖到 SubcomponentProject.fla 的舞台上,然后删除它们。

    这样会将该组件添加到“库”面板,但不会在文档中显示该组件。 

  6. 请执行以下操作之一:
    • 如果要更改文档中的所有滚动条,请在时间轴第 1 帧的“动作”面板上输入以下代码:
      import mx.controls.List
      import mx.controls.scrollClasses.ScrollBar
      ScrollBar.prototype.downArrowDownName = "MyScrollDownArrowDown";
      

      然后可以在第 1 帧上输入下列代码,以动态创建列表:

      createClassObject(List, "myListBox", 0, {dataProvider:["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]});
      

      或者,也可以将 List 组件从库拖到舞台上。

    • 如果要更改文档中的特定滚动条,请在时间轴第 1 帧的“动作”面板上输入以下代码:
      import mx.controls.List
      import mx.controls.scrollClasses.ScrollBar
      var oldName = ScrollBar.prototype.downArrowDownName;
      ScrollBar.prototype.downArrowDownName = "MyScrollDownArrowDown";
      createClassObject(List, "myList1", 0, {dataProvider:["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]});
      myList1.redraw(true);
      ScrollBar.prototype.downArrowDownName = oldName;
      

      注意:您必须设置足够多的数据,以便使滚动条显示出来,或者将 vScrollPolicy 属性设置为 true

  7. 选择“控制”>“测试影片”。

为文档中的所有组件设置子组件外观还有另一种方法:在外观元件 #initclip 部分的该子组件 prototype 对象上设置外观属性。有关原型对象的详细信息,请参阅《动作脚本字典》帮助中的 Function.prototype

要使用 #initclip 将经过编辑的外观应用到文档中的所有组件,请执行以下操作:

  1. 执行编辑组件外观中的步骤,但编辑滚动条外观。在此范例中,请编辑 ScrollDownArrowDown 外观并为它指定新名称 MyScrollDownArrowDown
  2. 选择“文件”>“新建”,然后创建新的 Flash 文档。使用唯一名称(如 SkinsInitExample.fla)保存该文件。
  3. 从编辑过的主题库范例的库中选择 MyScrollDownArrowDown 元件,将其拖动到 SkinsInitExample.fla 的舞台上,然后删除它。

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

  4. 在 SkinsInitExample.fla 库中选择 MyScrollDownArrowDown,然后从“选项”菜单中选择“链接”。
  5. 选中“为动作脚本导出”复选框。单击“确定”。

    自动选中“在第一帧导出”。

  6. 双击库中的 MyScrollDownArrowDown,以编辑元件模式将其打开。
  7. 在 MyScrollDownArrowDown 元件的第 1 帧上输入以下代码:
    #initclip 10
      import mx.controls.scrollClasses.ScrollBar;
      ScrollBar.prototype.downArrowDownName = "MyScrollDownArrowDown";
    #endinitclip
    
  8. 执行下列操作之一将 List 组件添加到文档中:
    • 将 List 组件从“组件”面板拖到舞台。输入足够多的标签参数,以便垂直滚动条能够显示出来。
    • 将 List 组件从“组件”面板拖到舞台上并将其删除。在 SkinsInitExample.fla 主时间轴第 1 帧上输入下列代码:
      createClassObject(mx.controls.List, "myListBox1", 0, {dataProvider:["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]});
      

      注意:添加足够多的数据,以便垂直滚动条可以显示出来,或者将 vScrollPolicy 设置为 true

下面的范例解释如何为舞台上已有的对象设置外观。本范例仅设置 List 的外观,而不设置任何 TextArea 或 ScrollPane 滚动条的外观。

要使用 #initclip 将经过编辑的外观应用到文档中的特定组件,请执行以下操作: 

  1. 执行编辑组件外观中的步骤,但编辑滚动条外观。在此范例中,请编辑 ScrollDownArrowDown 外观并为它指定新名称 MyScrollDownArrowDown
  2. 选择“文件”>“新建”,然后创建 Flash 文档。
  3. 选择“文件”>“保存”,并为文件指定诸如 MyVScrollTest.fla 的唯一名称。
  4. 将 MyScrollDownArrowDown 从主题库拖到 MyVScrollTest.fla 库。
  5. 选择“插入”>“新元件”,并为其指定诸如 MyScrollBars 的唯一名称。
  6. 选中“为动作脚本导出”复选框。单击“确定”。

    自动选中“在第一帧导出”。

  7. 在 MyVScrollBar 元件的第 1 帧上输入以下代码:
    #initclip 10
      import MyVScrollBar
      Object.registerClass("VScrollBar", MyVScrollBar);
    #endinitclip
    
  8. 将 List 组件从“组件”面板拖到舞台。
  9. 在属性检查器中,输入足够多的 Label 参数,以便使垂直滚动条显示出来。
  10. 选择“文件”>“保存”。
  11. 选择“文件”>“新建”,然后创建新的动作脚本文件。
  12. 输入以下代码:
    import mx.controls.VScrollBar
    import mx.controls.List
    class MyVScrollBar extends VScrollBar{
      function init():Void{
        if (_parent instanceof List){
          downArrowDownName = "MyScrollDownArrowDown";
        }
        super.init();
      }
    }
    
  13. 选择“文件”>“保存”,然后将此文件保存为 MyVScrollBar.as
  14. 单击舞台上的空白区域,然后在属性检查器中,选择“发布设置”按钮。
  15. 选择“动作脚本版本设置”按钮。
  16. 单击加号按钮添加新的类路径,然后选择“目标”按钮浏览到 MyComboBox.as 文件在硬盘上的位置。
  17. 选择“控制”>“测试影片”。