C#类演示Flex组件生命周期中所方法的调用过程

CUIT_IGIS 2012-11-20 10:01:48

C#类演示Flex组件生命周期中所方法的调用过程

基本说明:
1 目的:之所以要研究对象的生命周期,是因为明白对象生命周期中对象的出生,构造,配置,装配,初始化,创建完成,以及如何被回收。明白这些过程才能够准确的指导重写和在适当为之添加对象事件监听,明白对象执行过程
2 flex组件生命周期大致分为5个阶段
(1) 构造阶段
即通过new 新建一个对象,计算机在托管堆中分配内存空间
(2) 配置阶段
即为对象某些属性赋初值
(3) 装配
什么是装配,即通过父类的addchildren方法将该对象添加到父类的显示列表中去
(4) 初始化
首先分发预初始化事件,然后创建子对象,调用可重写的createchildren方法创建子对象,并使用addchildren方法将子对象添加到自己的显示列表中去,完成后分发初始化完成事件。然后调用childrencreated方法现实调用三个验证-提交方法,分别是 InvalidProperties-CommitProperties,InvalidDataSize-Measure,InvalidDisplayList-UpdateDisplayList,他们成一一对应关系,完成后分发创建完成事件,自此对象已经进入正常就绪状态,可以与外界通信和交互。
(5) 当该对象不再被引用时,垃圾回收机会根基算法确定该对象为可回收对象,执行析构函数回收计算机内存。


以下是方法调用过程:如有错误敬请斧正。



/// <summary>
/// 该类旨在说明flex中组件生命周期中所调用的方法过程
/// </summary>
class LifeCircle:Object//这里继承显示继承object对象旨在表示该对象继承与某个父类
{
/// <summary>
/// 预初始化事件
/// </summary>
event EventHandler PreInitlize;
protected void OnPreInitlize()
{
if (PreInitlize != null)
PreInitlize(this, new EventArgs());
}

/// <summary>
/// 创建完成事件
/// </summary>
event EventHandler CreateComplete;
protected void OnCreateComplete()
{
if (CreateComplete != null)
CreateComplete(this, new EventArgs());
}
/// <summary>
/// 初始化完成事件
/// </summary>
event EventHandler Initlize;
protected void OnInitlize()
{
if (Initlize!=null)
Initlize(this, new EventArgs());
}
/// <summary>
/// 创建孩子
/// 该方法只被执行一次
/// </summary>
public virtual void CreateChildren()
{
//当实例化完成一个孩子后
//进行配置 即 对该孩子对象属性赋值
//最后调用AddChild方法将该孩子添加到现实列表上去
//该方法执行完成 分发初始化完成事件
OnInitlize();
//调用ChildrenCreated方法
ChildrenCreated();
}
/// <summary>
/// 孩子创建完成,
/// 该方法只被执行一次
/// </summary>
public void ChildrenCreated()
{
//在该方法中线性调用三个验证-提交
//调用验证属性方法
InvalidProperties();
InvalidDataSize();
InvalidDisplayList();
///分发创建完成事件,自此该组件对象进入就需状态,具备正常与外界交互能力
OnCreateComplete();
}
/// <summary>
/// 此方法的执行意味着程序在下一次执行,让提交的属性值生效
/// </summary>
public void InvalidProperties()
{
//直接导致该方法的调用
//在以后交互生命周期中可以通过重写创建孩子对象,提交属性,测量,更新现实列表方法进行相应的操作
CommitProperties();
}
public void InvalidDataSize()
{
///直接导致该方法的调用
Measure();
}
/// <summary>
/// 该方法直接导致所有可视化对象重绘
/// </summary>
public void InvalidDisplayList()
{
///直接导致该方法的调用
UpdateDisplayList();
}
/// <summary>
/// 该方法完成某些属性的更改或者添加子对象,
/// 与CreateChildren方法功能基本一样,
/// 只不过CreateChildren不是验证-提交模式进行
/// </summary>
public virtual void CommitProperties()
{

}
/// <summary>
/// 主要完成组建布局,渲染的计算
/// </summary>
public virtual void Measure()
{

}
/// <summary>
/// 实现组建如何显示,即如何利用Measure方法计算后参数进行绘图
/// </summary>
public virtual void UpdateDisplayList()
{

}
/// <summary>
/// 添加子对象
/// 该子对象如果是可视化对象被添加到显示列表中
/// </summary>
/// <param name="obj"></param>
public void AddChild(object obj)
{

}
/// <summary>
/// 添加子对象
/// 该子对象如果是可视化对象被添加到显示列表中
/// </summary>
/// <param name="obj"></param>
/// <param name="index"></param>
public void AddChildAt(object obj,int index)
{

}
/// <summary>
/// 构造函数
/// 生命的起点
/// </summary>
LifeCircle()
{
//构造开始

//分发预初始化事件
OnPreInitlize();
//调用创建孩子方法
CreateChildren();
}
/// <summary>
/// 析构函数生命的结束
/// </summary>
~LifeCircle()
{

}
}
...全文
51 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧