ActionScript通用开发框架

Actionscript 3(简称as)自2006年诞生以来,出现了一大批很优秀框架。就我的知识领域,运用包括pureMVC、pushButton Engine(组件框架)、Robotlegs、Ash等等。我将对这几个通用的开发框架进行一个较深入的总结。同时下文的种种判断、结论可能不完全正确,完全限于个人的思考、理解得到的。运用框架让开发效率更高,扩展性好,可维护。理解框架让框架的作用发挥极致,开发挥洒自如!



       1 PureMVC
 


       PureMVC很多人应该很熟悉,记得那时候as的开发框架还是很少的,这种基于mvc的框架对于as来说很实用的,as是客户端语言,处理大量视图逻辑,提供了机制去解决视图和控制器间的低耦合。既然是开发框架,我从几个方面去分析它。



       > 框架机制:PureMVC几个核心的类组成:Facade(外观),Proxy(模型代理),Mediator(中介器),Command(控制器)。Facade是整个框架的核心,包括mediator、command、proxy全部由它管理。框架大量采用单例,包括Facade本身。mediator是视图的代理器,负责和view打交道,view本身只提供一个ui布局,逻辑控制处理全部在mediator中完成。command提供一种命令模式,单独处理一项逻辑事务,并且这种对应是可以配置,即使用一个命令名称对应一个命令体。这样将整个控制逻辑简单化,单一化模块化,便于替换,更新维护。proxy是数据模型的代理,一般情况我们会设计vo,就是特定的数据模型结构(data struct),然后使用proxy进行代理。整个框架静态分析下来就是这样的了,至此我们还没有分析框架的事件流,没有这个无法进行逻辑控制,协作处理。PureMVC采用了另一种设计模式,观察者模式,这里就涉及到观察者、通知者、消息。观察者就是对象的一个消息处理方法,通知者自然就是发送消息,消息又包括消息名称、内容等。消息发送是通过Facade进行的。Facade提供了机制,在mediator、commnad被注册时进行了消息名称+处理句柄的关联。所以当通过Facade发送消息的时候,将查找这种关联,并让那些observer观察者(meditor、command)进行响应。



       > 有图有真相,看看框架示意图更加清晰点

 


       > 运用与优缺分析



       第一步,继承Facade,实现自己的外观,进行数据模型代理、控制器、中介器的安装。设计数据模型(vo),完成对数据模型vo的proxy。安装视图组织设计对应的mediator,完成视图事件处理句柄和控制逻辑。划分逻辑,将不同的处理逻辑封装在不同的command中。



       pureMVC优点体现在:轻量级的库、简单易用、极大降低耦合度,独立不依赖第三方库。可以很好的协调人员进行mvc模式开发。就当前的框架而言,由于Facade是单例的,在多模块协作会出现问题。一个解决方案是让Facade在不同的包下。当然pureMVC提供了多核版本,这里就不进行讨论了。



       2 PushButton Engine(组件框架)



       pushButton其实是一个游戏engine,这里我列出来,是因为pushButton里面使用了一种基于组件的开发模式。按着设计者的初衷,一个游戏的设计,抛弃复杂的继承(因为继承本身也有诸多弊端,在复杂的游戏世界里),而采用一种“平铺”的方式,整个系统采用实体+组件完成。这个engine是比较复杂的,至今我的理解也不深入。如果是详细的讨论整个engine的开发流程,必须单独写一篇了。



       > 框架机制:一切皆组件。pushButton包括几个核心类:entity(实体)、component(组件)、template(模板)、group(组)。entity就是一个对象,比如角色、npc,是个抽象的对象。entity总是由component组成,各个component负责不同部分,比如有的是渲染,空间属性,数据模型等。template理解为可以多次初始化创建的entity。group是一组对象的集合,当group被创建的时候,group的子节点objectReference对应的实体等也会被初始化创建。

 

       pushButton提供了查找、访问别的组件的接口,同时提供了一个共享的eventDispatcher,实现消息事件的传递。如果深入去研究,有LevelManager(负责关卡的具体初始化工作)、NameManager(负责名称和类对象索引)、TemplateManager(负责加载卸载关卡文件,和序列化控制)等。



       > 框架示意图

 


 

      查看大图: Go,右键另存为即可。


      > 运用与优缺分析



      pushButton engine提供了基于XML配置文件的方法加载读取游戏,特别是关卡类游戏。一切基于组件! 在设计的时候,划分好不同的entity,然后分别设计不同的component。如果使用配置,必须写明objectReference,以完成初始化工作。如果使用手动,需要手动给entity添加不同的component,并手动实现整个流程。pushButton提供了屏幕管理类,方便视图间的切换,继承BaseScreen,实现自定义的screen。pushButton api很丰富,提供了很多公用组件模块。对应大的项目可以考虑发布一下组件,让多人提供协作开发。



       pushButton的api相对比较复杂,engine核心控制逻辑也需要深入学习才能弄懂!对应这样一个engine,学习成本相对是较高的,稳定性方面也可能存在风险。



       3 Robotlegs



       robotlegs框架对我而言,很熟悉了。我们的整个项目ui部分完全是基于这个开发的,我还看到过有人使用robotlegs开发出了完整的大型rpg游戏。robotlegs本质上还是mvc类型框架。不过robotlegs使用了依赖注入的方式降低对象间的耦合,简单的说对象间的相互引用是通过robotlegs框架完成的,同时robotlegs提供了更好的通信机制,和更低的耦合性。



       > 框架机制:robotlegs本质上也是使用mvc框架机制。包括:Actor(数据模型)、mediator(中介器)、command(控制器)、context(上下文)。整个框架的核心是依赖注入。context中负责完成几个映射的初始化工作,包括控制器、中介器、视图的映射。同时还包括对注入器的初始化工作。并且context里面还提供了一个事件派发器eventDispatcher。actor就是model部分,对应自定义数据模型一般继承actor,事件数据模型更新是派发事件通知给meditor和command。mediator提供对view的中介,负责处理和view的交互,发生消息命令。mediator被注入了meditorMap,可以实现新的视图中介器关联。

 

       command即是控制器部分,负责处理特定的逻辑块。需要说明的是command被注入了commandMap、meditorMap、eventDispatcher,还有injector。这些对象提供了command更加广阔的能力,包括发送事件、映射新的命令关联、新的视图中介器关联。最后就是mvcs中的“s”,s即是service,提供获取外部数据的服务功能。本质上将robotlegs、pureMVC是一个东西,最大的区别是依赖注入、事件派发机制。



       > 框架示意图

 


 

      事件流参看Robotlegs官网: Go


       > 运用与优缺分析



       robotlegs的具体运用和pureMVC很像。继承context设计自己的context,完成数据模型、视图、命令体映射等工作。设计基于actor的数据模型,当模型属性改变时派发事件。完成视图组织对应的mediator,安装好视图事件处理句柄,和处理逻辑。设计完成特定处理的命令体。注意的是依赖注入是框架自己完成的,并且注入点可以使用接口。



       robotlegs的优势可见一斑:轻量级的库、简单易用、极大降低耦合度。耦合度比pureMVC做的更彻底。并且依赖注入是可配置的。同时,我认为robotlegs的事件机制更高效,简单易懂,整个框架通过eventDispatcher对象进行收发。对于劣势可能是在于使用成本方面,由于引用依赖注入,框架要复杂很多。同时对于不需要开发大量视图交互的游戏,就没有这个优势了。



       4 Ash

 

       Ash是richardlord在2012设计的框架,借助这个框架richardlord开发了一个太空大战游戏,让我看到一个新的设计框架的诞生。实体系统现在正变得越来越受欢迎,有名的例子比如Unity。当然Ash现在很简陋,还不成熟,相信richardlord能做的更好!


       > 框架机制:“实体系统结构来源于解决游戏主循环这个问题的一次尝试。它将游戏主循环作为整个游戏的核心,并且预先假设在现代游戏结构中,简化游戏主循环比其他任何方面都重要,比如,它比分离控制器上的视角重要的多”。这是这个框架的出发点,简化游戏主循环。在ash中,最终游戏的主循环控制完全通过迭代system的update方法实现。ash包括几个核心类:entity(实体)、component(组件)、node(节点)、system(系统)。entity对应任何游戏都是存在的,可以理解为游戏中一个用例,一个组成对象,比如太空飞船。component理解为entity的不同部分,飞船可以分为渲染、数据模型、碰撞检测、控制组件等。system可以理解为处理具体一组抽象的针对node节点的逻辑。node是为system服务的,因为一般来说系统不关注具体的entity,而是关注一组特定的节点。节点又是由特定的组件构成的。本质上讲node提供了特定或者抽象的entity的组件的访问。system通过处理特定的node,实现处理对应的entity的组件,而组件对应一个entity来说,是共享传递的,从而实现逻辑处理。



       > 框架示意图

 


      > 运用与优缺分析



       Ash提供了Game类,使用时考虑给Game添加处理系统即可。一般会先划分不同entity,以及添加各自对应的component类。处理逻辑有先后顺序,决定了添加system到Game时有顺序安排,通过划分逻辑处理层次,将设计不同的system的扩展类,同时设计出配合system处理的node类。node类本质上是收集对entity的component的访问。整个游戏结构一目了然!



       Ash关注解决游戏主循环,在处理共性抽象方面很有特色。采用设计不同的组件来表达entity,显得十分清晰。不同system的设计针对处理不同逻辑。整个系统看起来简单有效。缺点是不合适开发大量视图交互的游戏,比如sns类webgame。同时如何良好划分不同的系统,设计不同的支持node,也是个难点。
 


        Conclusion

 

       自然as是博大精深的,还有很多其他优秀的框架,有的框架是为特定的游戏类型书写的,比喻很棒的位图Engine Flixel,这里没法一一列举和讨论。可以肯定的是开发框架为软件系统的设计提供了一套机制,划分出更加合理的模块类结构,低耦合,更简单方便的对象间交互协作等,让开发变的简单快速,并且维护性好,便于二次开发。接下来,我将应用这些框架,设计更多的应用、游戏出来。赶紧试试吧,接纳向新思想,你一定会更加进步!


       参考:
 

http://www.ibm.com/developerworks/cn/java/j-lo-puremvc/index.html
http://bbs.blueidea.com/thread-2969839-1-1.html
http://bbs.9ria.com/thread-140584-1-1.html
http://www.adobe.com/cn/devnet/actionscript/articles/intro-robotlegs-pt1.html
http://www.fans8.com/?p=646

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第 1 章 : 使用日期和时间 第 2 章 : 使用字符串 第 3 章 : 使用数组 第 4 章 : 处理错误 第 5 章 : 使用正则表达式 第 6 章 : 使用 XML 第 7 章 : 使用本机 JSON 功能 第 8 章 : 处理事件 第 9 章 : 使用应用程序域 第 10 章 : 显示编程 第 11 章 : 使用几何结构 第 12 章 : 使用绘图 API 第 13 章 : 使用位图 第 14 章 : 过滤显示对象 第 15 章 : 使用 Pixel Bender 着色器 第 16 章 : 使用影片剪辑 第 17 章 : 使用补间动画 第 18 章 : 使用反向运动 第 19 章 : 在三维 (3D) 环境中工作 第 20 章 : 文本使用基础知识 第 21 章 : 使用 TextField 类 第 22 章 : 使用 Flash 文本引擎 第 23 章 : 使用 Text Layout Framework 第 24 章 : 处理声音 第 25 章 : 使用视频 第 26 章 : 使用摄像头 第 27 章 : 使用数字权限管理 第 28 章 : 在 AIR 中添加 PDF 内容 第 29 章 : 用户交互的基础知识 第 30 章 : 键盘输入 第 31 章 : 鼠标输入 第 32 章 : 触摸、多点触控和手势输入 第 33 章 : 复制和粘贴 第 34 章 : 加速计输入 第 35 章 : AIR 中的拖放 第 36 章 : 使用菜单 第 37 章 : AIR 中的任务栏图标 第 38 章 : 使用文件系统 第 39 章 : 存储本地数据 第 40 章 : 在 AIR 中使用本地 SQL 数据库 第 41 章 : 使用字节数组 第 42 章 : 网络和通信基础知识 第 43 章 : 套接字 第 44 章 : HTTP 通信 第 45 章 : 与其他 Flash Player 和 AIR 实例通信 第 46 章 : 与 AIR 中的本机进程通信 第 47 章 : 使用外部 API 第 48 章 : AIR 中的 XML 签名验证 第 49 章 : 客户端系统环境 第 50 章 : AIR 应用程序的调用和终止 第 51 章 : 处理 AIR 运行时和操作系统信息 第 52 章 : 使用 AIR 本机窗口 第 53 章 : AIR 中的显示屏幕 第 54 章 : 打印 第 55 章 : Geolocation 第 56 章 : 应用程序国际化 第 57 章 : 本地化应用程序 第 58 章 : 关于 HTML 环境 第 59 章 : 在 AIR 中进行 HTML 和 JavaScript 编程 第 60 章 : 为 AIR HTML 容器编写脚本 第 61 章 : 处理 AIR 中与 HTML 相关的事件 第 62 章 : 在移动应用程序中显示 HTML 内容 第 63 章 : 安全性 第 64 章 : 如何使用 ActionScript 示例 第 65 章 : 本地数据库中的 SQL 支持 第 66 章 : SQL 错误详细消息、 ID 和参数 第 67 章 : Adobe 图形汇编语言 (AGAL)
第1篇ActionScript3.0语言基础 第1章ActionScript3.0概述 2 1.1ActionScript概述 2 1.1.1ActionScript环境 2 1.1.2ActionScript3.0特性 3 1.1.3ActionScript3.0代码组织 5 1.2ActionScript3.0API概览 5 1.3小结 8 第2章搭建ActionScript3.0开发环境 9 2.1搭建基于FlashCS3IDE的开发环境 9 2.1.1安装FlashCS3ID 9 2.1.2安装FlashCS3IDEupdate9.0.2 11 2.1.3在FlashCS3IDE下创建ActionScript3.0项目 11 2.2搭建基于Flex的开发环境 13 2.2.1安装FlexBuilder3 13 2.2.2在FlexBuilder3下创建ActionScript3.0项目 15 2.3服务端部署 16 2.3.1安装JDK 16 2.3.2安装Tomcat服务器 18 2.3.3Tomcat集成RED5服务器 20 2.4安装VisualBasic6.0 22 2.5小结 23 第3章ActionScript3.0语法 24 3.1变量 24 3.1.1变量声明 24 3.1.2变量赋值 25 3.1.3变量的生存周期 26 3.2基本数据类型 27 3.2.1Object类型 28 3.2.2int类型 28 3.2.3uint类型 29 3.2.4Number类型 30 3.2.5Boolean类型 32 3.2.6String类型 33 3.2.7Null类型 34 3.2.8void类型和*类型 34 3.3动态数据类型检查 35 3.4变量的类型转换 37 3.5ActionScript3.0语法 38 3.5.1大小写敏感 38 3.5.2字面量 38 3.5.3分号 39 3.5.4点号 39 3.5.5括号 39 3.5.6常量 40 3.5.7注释 41 3.5.8关键字与保留字 41 3.6操作符 42 3.6.1ActionScript3.0的运算规则 42 3.6.2初始化操作符 43 3.6.3数学操作符 43 3.6.4位运算符 45 3.6.5赋值操作符 47 3.6.6关系操作符 47 3.6.7逻辑操作符 48 3.6.8条件操作符 49 3.6.9E4X操作符 49 3.7条件语句 50 3.7.1if…else语句 50 3.7.2switch语句 53 3.8循环语句 55 3.8.1while语句 55 3.8.2do…while语句 56 3.8.3for语句 56 3.8.4for…in语句 57 3.8.5foreach…in语句 58 3.8.6break与continue 59 3.9函数 60 3.9.1函数的基本概念 60 3.9.2函数定义与调用 60 3.9.3函数的参数 63 3.9.4函数的返回值 66 3.9.5函数对象 66 3.9.6函数的生存周期 67 3.9.7递归函数 68 3.9.8全局函数 69 3.10小结 72 第2篇ActionScript3.0面向对象特性 第4章ActionScript3.0面向对象编程 74 4.1面向对象编程 74 4.1.1对象的世界 74 4.1.2具体与抽象 75 4.2类 75 4.2.1类的定义 76 4.2.2类的属性 78 4.2.3类的方法 80 4.2.4对象成员与静态成员 83 4.2.5this关键字 84 4.2.6动态类 85 4.3接口 86 4.3.1接口定义 86 4.3.2接口实现 87 4.3.3接口应用 87 4.4继承 89 4.4.1实现继承 89 4.4.2对象成员的继承 90 4.4.3静态成员继承 93 4.5包 94 4.5.1创建包 94 4.5.2类路径 95 4.5.3使用包 98 4.6订单利润计算示例 99 4.6.1需求分析 99 4.6.2编写代码 100 4.7小结 103 第5章ActionScript3.0中的String对象 104 5.1创建String对象 104 5.2字符串处理 105 5.2.1字符处理 105 5.2.2字符串比较 107 5.2.3裁割与连接 108 5.2.4查找、匹配与替换 110 5.2.5提取子串 112 5.2.6大小写转换 113 5.2.7空白处理 114 5.3制作文字移动效果 115 5.4小结 116 第6章ActionScript3.0中的Array类型 117 6.1索引数组 117 6.1.1创建索引数组 117 6.1.2数组元素的语句遍历 118 6.1.3数组元素的函数遍历 120 6.1.4元素处理 123 6.1.5数组复制 126 6.1.6查找与匹配 127 6.1.7数组排序 128 6.1.8数组与字符串 131 6.2关联数组 131 6.2.1Object类实现的关联数组 132 6.2.2Dictionary类实现的关联数组 132 6.3多维数组 133 6.4太阳系行星排序示例 135 6.5小结 138 第7章ActionScript3.0中的日期和时间 139 7.1日期与时间 139 7.1.1创建日期对象 139 7.1.2日期对象的属性与方法 140 7.1.3日期格式化 143 7.2时间间隔 144 7.2.1使用Timer类 144 7.2.2秒表示例 146 7.3小结 149 第8章ActionScript3.0异常处理 150 8.1ActionScript3.0异常 150 8.1.1异常概述 150 8.1.2异常分类 150 8.2ActionScript3.0调试方法 152 8.2.1FlashPlayer的调试版本 152 8.2.2在FlashCS3IDE中调试 152 8.2.3在FlexBuilder3中进行调试 155 8.3处理ActionScript3.0中的异常 160 8.3.1使用try…catch…finally语句 160 8.3.2throw语句主动抛出异常 162 8.3.3处理异常事件 163 8.4异常类型 163 8.4.1异常对象 164 8.4.2异常分类 164 8.4.3自定义异常类型 166 8.5小结 167 第3篇ActionScript3.0可视化编程 第9章可视化编程基础 170 9.1可视化编程模型 170 9.1.1可视化编程概述 170 9.1.2可视对象 172 9.1.3可视对象列表 175 9.1.4可视对象管理函数 181 9.2文档类绑定和元件类绑定 194 9.2.1Flash文档类绑定 195 9.2.2元件类绑定 196 9.3小结 198 第10章对象交互与事件???199 10.1ActionScript3.0事件模型 199 10.1.1事件流 200 10.1.2事件侦听器 204 10.2事件对象 208 10.2.1事件类型基类Event 208 10.2.2鼠标事件类型MouseEvent 211 10.2.3键盘事件KeyboardEvent 213 10.2.4文本事件类TextEvent 214 10.2.5焦点事件FocusEvent 214 10.2.6计时器事件TimerEvent 216 10.2.7HTTP状态事件HTTPStatusEvent 216 10.2.8网络状态事件NetStatusEvent 216 10.2.9进度事件ProgressEvent 217 10.2.10异步异常事件ErrorEvent、IOErrorEvent、SecurityErrorEvent 218 10.2.11全屏事件FullScreenEvent 219 10.3虚拟键盘示例 220 10.4小结 224 .第11章ActionScript3.0可视对象 225 11.1可视对象类DisplayObject 225 11.1.1可视对象列表 225 11.1.2位置、尺寸、透明度与可见性 227 11.1.3缩放与旋转 228 11.1.4坐标体系 231 11.1.5背景色 232 11.1.6区域与范围 233 11.1.7色彩调整 235 11.1.8遮罩 236 11.1.9位图缓存 237 11.1.10混合模式 238 11.2舞台对象Stage 239 11.2.1图像品质与帧频 239 11.2.2缩放与对齐 240 11.2.3焦点控制 242 11.2.4交互控制 242 11.2.5全屏?刂?243 11.3容器对象Sprite 245 11.3.1按钮模式 245 11.3.2热区 246 11.3.3对象拖放 247 11.4影片剪辑MovieClip 248 11.5加载器Loader 251 11.6按钮对象SimpleButton 254 11.7文本框TextField 255 11.7.1文本类型 255 11.7.2外观控制 256 11.7.3设置文本 256 11.7.4处理HTML 258 11.7.5输入限制 260 11.7.6文本格式化 260 11.7.7多行模式 262 11.7.8适应与滚动 263 11.7.9选区 264 11.7.10字体嵌入 265 11.7.11事件处理 268 11.8小结 269 第4篇ActionScript3.0数据处理 第12章数字类型与数学运算 272 12.1数字类型概述 272 12.2Math类 273 12.2.1角度与弧度 273 12.2.2Math常量 273 12.2.3最大值、最小值与绝对值 274 12.2.4数值舍入与随机函数 274 12.2.5幂运算与开方运算 275 12.2.6对数函数 276 12.2.7坐标与弧度 276 12.2.8三角函数 277 12.3求解一元二次方程示例 278 12.4小结 279 第13章XML应用基础 280 13.1了解XML 280 13.2处理XML数据 283 13.2.1初始化XML对象 283 13.2.2访问与遍历 285 13.3XML对象 288 13.3.1XML对象的数据处理方式 288 13.3.2处理子节点 289 13.3.3访问XML数据 293 13.3.4处理命名空间 294 13.4网络图片加载器示例 295 13.5小结 298 第14章正则表达式与字符串匹配 299 14.1正则表达式概述 299 14.2正则表达式语法 300 14.2.1创建对象 300 14.2.2字符、元字符与元序列 301 14.2.3字符集 306 14.2.4组 307 14.3标记、属性与方法 310 14.3.1正则表达式的标记与属性 310 14.3.2正则表达式的方法 314 14.4小结 315 第5篇ActionScript3.0图形编程 第15章ActionScript3.0中的几何对象 318 15.1Point对象 318 15.1.1创建Point对象 318 15.1.2距离计算 319 15.1.3中间点 319 15.1.4极坐标转换 319 15.1.5坐标计算 320 15.1.6坐标缩放 320 15.2矩形对象 321 15.2.1创建Rectangle对象 321 15.2.2确定矩形位置 321 15.2.3调整矩形 322 15.2.4位置关系判定 324 15.3矩阵对象 325 15.3.1初始化Matrix对象 326 15.3.2矩阵应用 327 15.4小结 328 第16章ActionScript3.0图形绘制 329 16.1绘制矢量图形 329 16.1.1位图与矢量图 329 16.1.2绘制矢量图 330 16.2使用线条 330 16.2.1设置线条样式 331 16.2.2直线与曲线 332 16.3使用填充 334 16.3.1单一色填充 335 16.3.2渐变色填充 336 16.3.3位图填充 337 16.4图形绘制函数 338 16.4.1内置图形绘制函数 338 16.4.2绘制三角形 340 16.4.3绘制正多边形 340 16.5白板示例 341 16.6小结 345 第17章ActionScript3.0运动编程 346 17.1运动编程原理 346 17.1.1物体移动 346 17.1.2坐标计算 348 17.2简单物理引擎 352 17.2.1运动的物理原理 352 17.2.2创建物理引擎 354 17.2.3匀速直线运动 363 17.2.4匀加速运动 364 17.2.5圆周运动 365 17.2.6卫星绕地运动 366 17.3小结 368 第18章位图处理 369 18.1位图对象 369 18.1.1位图格式 369 18.1.2位图图像与位图数据 370 18.1.3创建位图对象 370 18.1.4载入位图对象 371 18.2处理位图数据 371 18.2.1位图复制 372 18.2.2像素处理 376 18.2.3位图填充 378 18.2.4生成噪点 379 18.2.5图像滚动 381 18.2.6色彩调整 382 18.2.7阀值处理 383 18.2.8图像混合 384 18.3位图画板示例 386 18.4小结 392 第19章ActionScript3.0滤镜 393 19.1使用滤镜 393 19.1.1滤镜原理 393 19.1.2对可视对象应用滤镜 394 19.1.3对位图数据应用滤镜 395 19.2投影滤镜DropShadowFilter 396 19.3发光滤镜GlowFilter 398 19.4渐变发光滤镜GradientGlowFilter 399 19.5模糊滤镜BlurFilter 401 19.6斜角滤镜BevelFilter 403 19.7渐变斜角滤镜GradientBevelFilter 404 19.8色彩矩阵滤镜ColorMatrixFilter 406 19.9矩阵盘绕滤镜ConvolutionFilter 408 19.10置换滤镜DisplacementMapFilter 410 19.11滤镜切换的相册示例 412 19.12小结 415 第6篇ActionScript3.0多媒体编程 第20章音频编程 418 20.1音频概述 418 20.2播放声音 418 20.2.1音频嵌入 419 20.2.2音频载入 420 20.2.3流式音频 422 20.3播放控制 424 20.3.1缓冲控制 424 20.3.2回放控制 424 20.3.3音效控制 425 20.4MP3播放器 425 20.5使用麦克风 434 20.5.1获取麦克风 434 20.5.2回环模式 435 20.5.3静音设置 436 20.6录制音频到RED5服务器 436 20.7小结 442 第21章视频编程 443 21.1FLV视频 443 21.1.1视频概述 443 21.1.2视频转换 444 21.2播放视频 445 21.2.1视频嵌入 445 21.2.2组件播放 446 21.2.3视频载入 447 21.2.4流式视频 449 21.3播放控制 450 21.3.1缓冲控制 450 21.3.2回放控制 451 21.3.3视频音效 453 21.4视频播放器示例 453 21.4.1视频载入播放器 453 21.4.2视频流播放器 461 21.5使用摄像头 467 21.5.1获取摄像头 467 21.5.2模式设置 468 21.5.3本地回放 469 21.5.4运动检测 469 21.5.5图像质量 469 21.5.6视频录制 470 21.6录制视频到RED5服务器 471 21.7小结 477 第7篇ActionScript3.0数据通信 第22章本地通信 480 22.1本地连接LocalConnection 480 22.1.1使用本地连接 480 22.1.2异域调用 481 22.1.3应用授权示例 482 22.2本地数据存储 486 22.2.1使用SharedObject本地存储 486 22.2.2用户登录示例 487 22.3小结 491 第23章网络通信 492 23.1处理外部数据 492 23.1.1请求与参数 492 23.1.2简单数据发送 493 23.1.3数据发送与载入 494 23.1.4图片载入示例 497 23.2远程数据共享 499 23.2.1使用远程共享 499 23.2.2绘图共享示例 500 23.3FlashRemoting调用远程方法 503 23.3.1调用远程方法 503 23.3.2远程调用示例 505 23.4套接字通信 506 23.4.1使用套接字通信 506 23.4.2套接字通信示例 508 23.5文件上传与下载 512 23.5.1文件上传 512 23.5.2文件下载 515 23.5.3文件上传下载示例 515 23.6小结 520 第8篇深入FlashPlayer 第24章FlashPlayer的客户端系统 522 24.1系统类System 522 24.1.1设置编码 522 24.1.2内存使用 522 24.1.3播放器控制 523 24.1.4剪贴板 523 24.1.5System类功能示例 524 24.2获取系统信息 526 24.2.1使用Capabilities类 527 24.2.2本地机器特性检测示例 528 24.3输入法编辑器IME控制 530 24.3.1使用IME 530 24.3.2IME控制示例 532 24.4fscommand()函数 535 24.4.1使用fscommand()函数 535 24.4.2fscommad()函数示例 537 24.5小结 539 第25章FlashPlayer的安全特性 540 25.1安全性概述 540 25.1.1权限管控模型 540 25.1.2安全沙箱模型 541 25.2系统管理员管控 543 25.2.1使用mms.cfg配置文件 543 25.2.2全局信任目录管控 548 25.3用户管控 548 25.3.1使用FlashPlayer设置对话框 549 22.3.2使用全局设置管理器 550 25.3.3用户受信任目录 553 25.4FlashPlayer许可控制 554 25.4.1内容载入许可 554 25.4.2交叉域与跨脚本访问许可 555 25.4.3宿主程序中的安全许可 556 25.4.4全屏模式安全许可 557 25.4.5本地连接安全许可 557 25.5交叉域安全示例 558 25.5.1创建测试的SWF 558 25.5.2跨脚本访问测试 562 25.5.3文本载入测试 563 25.6小结 564 第26章FlashPlayer与宿主程序 565 26.1使用外部接口ExternalInterface类 565 26.1.1ExternalInterface类 565 26.1.2ActionScript与JavaScript交互 566 26.1.3ActionScript与桌面程序交互 567 26.2网页脚本交互示例 568 26.3桌面应用交互示例 571 26.4小结 573 第27章ActionScript打印控制 574 27.1使用打印作业对象 574 27.1.1创建与启动打印作业 574 27.1.2设置打印内容 575 27.1.3打印调整 576 27.2打印示例 577 27.3小结 582 第9篇FlashAIR入门 第28章创建与部署AIR应用 584 28.1AdobeAIR运行时安装与配置 584 28.2使用FlashCS3IDE创建和部署AIR应用 585 28.2.1安装FlashCS3IDEupdate9.0.3 585 28.2.2创建和部署AIR应用 585 28.3使用FlexBuilder3创建和部署AIR应用 588 28.4AIR应用配置文件 591 28.4.1应用程序配置 591 28.4.2初始化窗口设置 595 28.4.3图标设置 595 28.4.4关联文??柚?596 28.5小结 597 第29章AIR部分特性介绍 598 29.1AIR本地窗口 598 29.1.1创建与关闭本地窗口 598 29.1.2添加窗体内容 600 29.1.3位置与尺寸 600 29.1.4窗口层叠控制 602 29.1.5本地窗口控制示例 602 29.2访问文件系统 612 29.2.1目录与文件引用 612 29.2.2目录与文件浏览 614 29.2.3目录与文件属性 615 29.2.4快速载入与保存 616 29.2.5目录与文件管理 617 29.2.6目录与文件管理示例 620 29.2.7文件内容读写 626 29.2.8文件内容读写示例 629 29.3访问数据库 632 29.3.1使用数据库连接 632 29.3.2建立数据表 634 29.3.3插入数据 635 29.3.4设置SQL语句参数 636 29.3.5查询数据 636 29.3.6用户注册与登录示例 637 29.4小结 642 第10篇实战篇 第30章AdobeAIR应用——本地播放器 644 30.1分析与设计 644 30.1.1功能分析 644 30.1.2界面设计 645 30.1.3模块设置 647 30.2建立项目 649 30.3创建新组件 650 30.3.1创建滚动容器组件 650 30.3.2创建复选框组件 653 30.3.3创建缓冲与播放控制条 655 30.4创建播放器工具类 656 30.4.1创建数据库工具类 656 30.4.2创建字符串?ぞ呃?658 30.5创建数据模块 659 30.5.1创建MediaFile类 659 30.5.2创建MediaFileList类 662 30.6创建播放器事件类 665 30.7创建播放器内核 666 30.7.1创建IMediaPlayerCore接口 667 30.7.2创建播放器内核基类 667 30.7.3创建MP3播放内核 671 30.7.4创建FLV播放内核 675 30.8创建播放器界面 680 30.8.1创建MediaFileItemUI类 680 30.8.2创建MediaFileListUI类 682 30.8.3创建播放列表管理器类 684 30.8.4创建播放控制面板类 686 30.8.5创建视频部件 689 30.8.6创建播放器整体部件 691 30.9测试主程序 696 30.10小结 697 第31章AsWing应用——聊天室程序 698 31.1分析与设计 698 31.1.1功能分析 698 31.1.2界面设计 699 31.1.3AsWing简介 700 31.2部署服务端 700 31.3创建客户端项目 704 31.4创建聊天室界面 706 31.4.1创建登录窗口 706 31.4.2创建用户聊天界面 711 31.5创建聊天室通信与控制组件 715 31.5.1定义DataEvent事件类 715 31.5.2添加IServerApi接口 716 31.5.3定义HTTPWeb应用通信与控制类 716 31.5.4定义RTMP通信与控制类 719 31.6测试主程序 722 31.7小结 723

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值