打印

[AS1&2] flash组件开发要点

开发组件的目的就是为了封装可以重复使用的应用程序块,减少毫无意义的重复编码工作,提高开发效率.

最近在研究flash8的v2组件整理了一些制作组件的基础知识

1.必须清楚的一些类


Object类是基类,所以其他的类都派生于他.这个类我们需要重点了解reisterClass的用法,这个方法可以将类和元件关联起来,通俗的讲就是将类的一些方法和属性赋给元件对象,这个方法和在库中设置类绑定的作用是一样的.


侦听广播机制和委托机制必须熟悉,这套机制是flash开发大型项目的杀手锏.

2.flash8 V2组件的构架

这是flash8 V2组件的构架,所有自定义组件都需要从MovieClip类继承,在flash8帮助文档中有详细的自制组件的步骤.

3.元数据标签和数据绑定


元数据标签中的[Bindable]定义将会和组件绑定窗口关联

利用这个关联可以在多个组件中传递数据,flash8帮助中有一个简单的例子就是用一个CheckBox组件的属性selected和一个InputText组件的属性editable绑定,从而可以用CheckBox组件可以控制InputText组件的可编辑状态.

4.设计模式
在下面的范例中你能看到单例模式和混合模式的运用
点击下载此文件

衫人感悟:
最近在完善自己的flash知识体系,有很多收获.其中最重要的一点就是要掌握正确的学习方式.
a.任何语言都是要基于一种规范的,所以在学习之前通读语言规范是非常必要的.
b.通读帮助文档.如果你能完整把一种的语言的官方帮助文档过滤一遍,你会发现你的水平马上就能上一个台阶.
c.向经验丰富的同行请教,虚心是永久的话题
d.心无杂念,如果你做到30岁还能在贫困中保持对技术非常高的热情的话,那你离摆脱贫困已经不远了
e.锻炼身体,保持旺盛的精力
本帖最近评分记录
我的blog:http://www.wakao123.com
详细一点吧,最好再举个例子
最近也想开发一套像9那样的轻量级的组件,学习了~`
欢迎来我的全Flash站收藏:http://www.flashk3.com/

TOP

认证您的手机,获得手机认证图标, 更多手机认证的好处
我觉得组件是flash提高效率的必经之路,我也在研究它。

有点让人沮丧的是,我原以为swc是不能看到源代码的,遗憾的是还是一览无余。
SWC同样可以给破出来.
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:25694172

TOP

回复里面不能添加图片,有兴趣的可以去我的blog观看

flash开发人员如果要努力融入到传统开发人员的行列吃透一套组件制作流程原理是个不错的选择,因为设计整套组件框架及实现组件细节将充分应用到了设计模式的大部分常用的模式,包括编程思想。
我选择的第一个组件是List组件,你可能很奇怪我为什么不从组件的框架开始,如果从flash开发人员角度出发我认为一开始就涉及框架的内容跨度大了一些,我将通过细节的讲解逐渐上升到框架设计的层次上来。下面让我们来看看实现List组件的细节吧。


这是list组件基本的构成部分, list组件包括滚动窗口对象,滚动对象和滚动条对象,下面我们针对scrollBar进行分析

图略

从图中可以看出scrollBar由上下方向按钮和滑块,滑道四个对象组成。

我们知道在flash中最常用的能够被滚动的对象是TextField和MovieClip,flash自带的UIScrollBar组件就是为专门滚动TextField文本对象而设计的,所以在开发组件的时候针对不同的需求不同的人一定会出现不同的设计。

下面我们来开发一个能够针对任何内容进行滚动的ScrollBar.

图略

试着分析下:我们常见的情况是用鼠标拖动scrollBar的滑块左恻的内容会跟着移动,这是通过scrollBar滑块控制对象的情况,IE窗口就是ScrollBar典型的应用。但是如果你打开flash代码编辑器当左恻出现下拉条的时候你会发现你键盘的上下键也可以控制文本内容的移动从而影响到scrollBar滑块的移动。

通过上面的分析给我们带来了一个问题,那就是scrollBar不知道被滚动的对象是谁,总共有多少个被滚动的对象,也无法得知被滚动对象的广播事件。对于需要滚动的对象可能有一些解决办法,例如获取一个scrollBar对象,然后动态的将这个scrollBar的滚动对象指向自己,但是你可能发现你需要的不是一次滚动一个象素,而是二十个象素,然后你回过头去修改scrollBar,添加一个一次移动20象素的方法。这种设计你会发现有问题,总是要对这个scrollBar类进行修修补补,甚至到最后你发现已经通过这种方式满足不了源源不断的需求了。这个时候你如果发现原来还有设计模式这么一回事,呵呵,不说了。

在设计模式里面有种叫MVC的模式就是用来解决这类问题的。很显然我们需要一个中间类来缓解这两个对象的矛盾,我们暂且命名为BoundedExtentModel,在MVC模式中他扮演的是Modle的角色。BoundedExtentModel类中见定义下图的标注的数据。

图略

里面提取里scrollBar的几个关键数据
minimun:thumbslideway的y轴坐标
maximun:thumbslideway的高度
value:thumb的y轴坐标
extent:thumb的高度
你会发现利用这几个值,你能组合出你计算scrollBar的任何需求。

BoundedExtentModel在这里我们设计为接口,然后通过defaultBoundedExtentModel类去具体实现,这是比较常用的类的设计方式,对于flash开发人员可能比较陌生,但是你用了一次之后你会发现你的程序开始有了一些思想在里面了。

我们的scrollBar开始通过BoundedExtentModel类向外界通讯了——未完 衫人 2006.11.8
我的blog:http://www.wakao123.com

TOP

好文! 期待后续。

TOP

引用:
原帖由 HBrO 于 2006-10-21 17:12 发表
SWC同样可以给破出来.
HBrO,每次都强调这个,好象对F很失望...

TOP

楼主又给我提供了一种学习Flash的方法哦~  谢了!

TOP