某些情况下,您可能要修改组件中某个子组件的外观,但无法直接访问外观属性(例如,无法直接修改 List 组件中的滚动条外观)。使用以下代码,您可以访问滚动条外观。在运行此代码之后创建的所有滚动条也都会具有新外观。
如果组件中包含子组件,则组件字典的组件条目中会标明这些子组件。
这样会将该组件添加到“库”面板,但不会在文档中显示该组件。
这样会将该组件添加到“库”面板,但不会在文档中显示该组件。
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 组件从库拖到舞台上。
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
。
为文档中的所有组件设置子组件外观还有另一种方法:在外观元件 #initclip
部分的该子组件 prototype
对象上设置外观属性。有关原型对象的详细信息,请参阅《动作脚本字典》帮助中的 Function.prototype
。
此操作将该元件添加到库中,但不在舞台上显示它。
自动选中“在第一帧导出”。
#initclip 10 import mx.controls.scrollClasses.ScrollBar; ScrollBar.prototype.downArrowDownName = "MyScrollDownArrowDown"; #endinitclip
createClassObject(mx.controls.List, "myListBox1", 0, {dataProvider:["AL","AR","AZ", "CA","HI","ID", "KA","LA","MA"]});
注意:添加足够多的数据,以便垂直滚动条可以显示出来,或者将 vScrollPolicy
设置为 true
。
下面的范例解释如何为舞台上已有的对象设置外观。本范例仅设置 List 的外观,而不设置任何 TextArea 或 ScrollPane 滚动条的外观。
自动选中“在第一帧导出”。
#initclip 10 import MyVScrollBar Object.registerClass("VScrollBar", MyVScrollBar); #endinitclip
import mx.controls.VScrollBar import mx.controls.List class MyVScrollBar extends VScrollBar{ function init():Void{ if (_parent instanceof List){ downArrowDownName = "MyScrollDownArrowDown"; } super.init(); } }