Feathers:component-lifecycle

来自Starling中文站
跳转到: 导航, 搜索

原文地址:http://wiki.starling-framework.org/feathers/component-lifecycle

目录

Feathers 组件生命周期

开发定制 Feathers 组件,必须对其生命周期有基本的理解。 从创建到销毁,组件将经历几个不同的阶段。

实例化

组件实例通过 new 关键字创建,但还没有被添加到显示列表。此时可修改实例属性,新的属性值将被保存,但只有当实例被添加到显示列表后这些修改才能起作用。这样能保证 Feathers 组件的绘制代码不被频繁调用。

初始化

初始化指的是组件被添加到display list后,initialize() 函数被调用。此时组件首次生效,任何属性失效后将导致组件的重绘。 (参考下文:失效期)

验证 Validation

验证指的是组件的 draw() 函数被调用后。 此时组件应处理其属性的任何改变。 如果组件的大小没有指定,应当自动计算其理想的长宽。而后长宽值应传入 setSizeInternal() 函数,保证最小长宽等其他属性被考虑在内。当最终的大小确定以后,组件将确定其子组件的大小和位置。

有关 width 和 height 属性,以及其他 Feathers 组件内部变量的更多详细信息,请阅读Anatomy of a Feathers Component

渲染 Render

在 Starling 渲染显示列表之前,组件会自动进行验证。Feathers 组件一般不会重载 starling 的 render() 函数。

失效 Invalidation

任何一次属性的改变,组件都应当通过传入一个或多个标志来调用 invalidate() 来区分失效操作的类型。类型包括如大小、布局和选择区域等。每个组件内部对属性的失效标志都有自己的分类,但 FeathersControl 也定义了一些 protected 常量作为通用的标志。当然,并不强制如何使用它们,您可以尽管无标志调用 invalidate() 或者使用私有的布尔变量来跟踪组件状态。

失效期后,组件将等待 Starling 下次渲染之前重新验证。

1)失效 2)验证 3)渲染 这个过程将无限期执行直到组件被移出显示列表。一旦被重新加入,这个过程将重新开始。


移除 Removal

组件从显示列表移除后,将不会进行验证操作。属性的变动会被保存,但只有当组件被重新加入stage后才会被处理。

销毁 Disposal

和其他 Starling 显示对象一样,Feathers 组件提供dispose() 函数用户处理移除事件侦听函数和销毁子组件的操作。 通常 Feathers 核心组件的设计允许不严格执行销毁操作,但出于安全性考虑还是推荐进行销毁。


垃圾回收 Garbage Collection

当组件的所有 reference 被删除后,即可在运行时以被当作垃圾回收。 组件的短暂生命由此终结。


更多教程,请回到Feathers Documentation

个人工具
名字空间

变换
操作
导航
Starling中文资料
Starling原创教程
论坛
友链
工具箱