每当我想在 Flash 中绘制某些东西时,我都会继承 fl.core.UIComponent 而不是 Sprite 或 Movieclip,因为它的宽度/高度实现更合理(注意这不是 Flex UIComponent)。
我相信这在很大程度上取决于您的项目要求。如果您使用其他 fl.controls,出于各种原因(例如使用 dataProviders 或其他数据传递),让您的自定义组件与其余 flash 组件兼容可能是有意义的
例如,假设您有一个按钮 - UIComponent 的良好用例 - 但该按钮有一个图标、一个文本字符串和一个显示箭头。即3个孩子。我也会将这 3 个孩子作为 UIComponents。
这个例子不是一个特别好的例子,因为 Button 组件(fl.controls.Button) 已经有一个您使用setStyle()设置的图标:
myButton.setStyle("icon", MyIconClass);
我知道我可以创建自己的 Sprite 子类来覆盖宽度/高度方法和属性,但是有人看到以这种方式使用 UIComponent 的任何缺点吗?
就我个人而言,我尽量让事情变得简单。如果有必要对 UIComponent 进行子类化,请使用它,但请注意使用 Flash V3 组件架构 (fl.controls) 的组件的生命周期。尽量不要经常提交/无效,因为您可能会导致在使用更多实例时变得明显的性能问题。
Jeff Kamerer 有一篇关于在 Flash 中创建 ActionScript 3.0 组件的非常好的 devnet 文章系列。以下是涵盖的一些主题:
- 在组件影片剪辑元件中设置图层和帧
- 为您的组件实施实时预览
- 调度事件
- 支持样式和易于编辑的皮肤
- 使用失效模型管理绘图
- 管理焦点
- 处理键盘输入
- 为您的 ActionScript 定义创建已编译的剪辑填充程序
- 将您的组件部署到组件面板
所以,简而言之,如果你可以在不继承 UIComponents 的情况下处理大小调整/定位,我会推荐它。越简单越好。此外,当您需要迁移部分项目时,您不会引入对 V3 组件的依赖关系。如果你必须继承 UIComponents,让它们尽可能简单/轻便。我个人认为它们已经足够复杂了,但至少它们比 V2 (actionscript 2) 组件要好。
高温高压