设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 其他开发语言 >> Flash V2组件基础件开发:ActionRegistry消息分派器。
精品推荐
其他开发语言点击TOP10
·数字小键盘指法练习
·用C语言编通讯录程序(初学者级别的)
·Modem 常用AT指令集
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
·Thinking in C++ 简体中文第二版
·debug和release的区别
·error LNK2001: unresolved external symbol __ftol2 错误解决
·C库函数手册
·一个简单的C语言编译器
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

Flash V2组件基础件开发:ActionRegistry消息分派器。

作者: 来源:网络文章 时间:2005-12-17 19:58:53

Flash V2组件基础件开发:ActionRegistry消息分派器。(1)

需求


在一个小型客户端项目中,为了美化界面,除了网络连接、数据逻辑处理部分用VC实现以外,显示部分都使用FLASH,速度要求不高,用Flash的好处是可以做出一些效果,而且美工可以只负责美工,程序员编写一些简单的Flash Action配合一下即可。

这是一个简单的Flash应用,半天时间就已经完成了。进入测试,通过所有要求。

随之而来的是版本升级问题,最初的简单版本经过3次升级,加上美工参与代码维护以后,基本上原来的代码已经散乱不堪,BUG开始涌现,维护问题突显。

原本打算抽调一名程序员协助美工完成脚本代码维护,不过最终没安排过来。美工自己显然已经不知道自己把代码改成什么样了,也找不出BUG出在什么地方。

程序工作的流程很简,从网络接收的数据经过简单分析处理,最终被分解为简单的“action”(实际上我们把它称为消息),传递给Flash,由它解释成显示数据。初期因为每个action只驱动一个显示动作,所以工作得很好,代码也很整齐。后来升级以后,美工介入编码,由于没有系统结构意识,在“一个Action驱动多个显示动作”时采用了愚蠢的“补贴”方式,致使每个处理action的函数都臃肿不堪,最终导致了蜘蛛网似的代码结构,全局变量(Flash中的绝对路径)到处使用,一个小的改动都可能使显示全部错误。

我开始思考解决办法。

美工的编码方式很简单但也不能说错误,他们有一套自己的编码方式,在短时间内强行去改变他们是没有意义的,让程序员参与编码不但浪费人力,反而让他们双方都觉得进度缓慢,唯一可行的方式是顺着美工的方向走。大致看了一下他们的代码,从网上抄过来的特效代码比较多,只是结构稍差,但并非不可行。

我首先要求美工:每一个小的显示部件单独开发,在一个独立的文件中做好、测试好,并且要保证在各个路径层次上执行正常(减少他们使用全局路径,最终确定了只使用一个全局路径以方便维护)。他们做这些没有任何问题,完成速度也很快。

然后我把这些小部分要用到的action分析了一下,基本上还是我们原来那些action,现在的要求是把这些action送达这些小部件中以进行处理。

问题明确了:每个action由数个不同的小部件侦听,只要写好这个类,并由这些部件注册侦听器即可。

功能描述

因为是在VC中发送这些action,为了在Flash脚本中处理简单一些,我们在VC中驱动Flash显示的代码统一形式为:

m_wndFlash.SetVariable (“_root.action_processor.action“, “action_type:action_body“);

第一个参数是action处理器组件的一个setter函数,后面的字符串就是传递给它处理的。因为在VC中无法直接调用组件的函数,只能用这种方式间接调用。根据这个约定,我在原来的基础上编写了ActionRegistry类,为了美工调用方便,做成了一个可视组件,实际上并不负责显示,只是方便他把组件拖到场景中并取个名字。

实现

实现过程并没有太复杂,所以我直接把代码发上来了。

class biz.blueskytech.ActionRegistry
{
    private var _action_listenerlist_map : Object;

    function ActionRegistry ()
    {
        _action_listenerlist_map = {};
    }

    function registryListener (type:String, obj:Object) : Void

共5页 9 7 [1] [2] [3] [4] [58 :>

Flash V2组件基础件开发:ActionRegistry消息分派器。 相关文章:
Flash V2组件基础件开发:ActionRegistry消息分派器。 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com