《Flex3权威指南》学习笔记 04

Posted on Jul 18, 2011

Lesson 21:部署Flex应用程序

  • AIR: Adobe Integrated Runtime
  • AIR 特点:
    • 直接访问文件系统;
    • 可以从操作系统拖拽文件到AIR应用中;
    • 使用窗口API,可实现自定义应用外观;
    • 提供API部署不完全连接Internet的应用;
    • 脱离浏览器,可设置快捷键(hotkey);
    • 提供嵌入式数据库,具有更强更完备的客户端数据存储能力。

Lesson 22:创建过渡和行为

  • 行为和效果:
    • 淡入淡出
    • 向内溶解,向外溶解
    • 移动或重新调整组件
    • 旋转组件
    • 缩放
    • 从左、右、上、下显示
    • 光亮,光圈
    • 音效等等

Lesson 23:Flex的打印功能

  • Flex提供的打印功能比较简单,可以满足基本的应用,但是复杂一点的就有些吃不消。不知道SDK4.0+有没有改善,我自己暂时还没有使用过SDK4.0+的打印功能。
  • FlexPrintJob:打印对象( 容器,组件等)
  • PrintDataGrid:适用于打印的DataGrid,就是针对打印做过优化的,利于显示和具备更好的打印效果。
  • FlexPrintJob流程:
    • new FlexPrintJob()
    • start()
    • addObject()
    • send()
    • 清理工作
  • FlexPrintJobScaleType : 打印缩放比例,提供几种打印内容与纸张之间的比例关系;
    • MATCH_WIDTH 适合宽度,缩放对象以填充可用页面宽度。
    • MATCH_HEIGHT 适合高度,缩放对象以填充可用页面高度。
    • SHOW_ALL 显示全部,缩放对象以适合在单个页面中填充一个尺寸;也就是说,选择 MATCH_WIDTH 或 MATCH_HEIGHT 缩放类型中较小的值。
    • FILL_PAGE 填充页面,将对象缩放到至少一整页那么大;也就是说,选择较大的 MATCH_WIDTH 或 MATCH_HEIGHT 缩放类型。
    • NONE 不设置,不要缩放输出。

Lesson 24 :使用共享对象

  • 使用SharedObject类保存特定的用户信息,看了下在线文档,写的很清楚而且详细。“SharedObject * 类用于在用户计算机或服务器上读取和存储有限的数据量。使用共享对象,可在永久贮存在本地计算机或远程服务器上的多个客户端 SWF 文件和对象之间实现实时数据共享。本地共享对象类似于浏览器 Cookie,远程共享对象类似于实时数据传输设备。为了使用远程共享对象,您需要 Adobe Flash Media Server。”
  • 使用SharedObject可以执行以下操作:
    • 保持本地永久性;
    • 在Flash Media Server 上存储并共享数据;
    • 实时共享数据。(这个功能总是被演示一次又一次…)
  • ShardObject 特性:
    • 保存在客户端上
    • 扩展名为 .sol
    • 默认大小 100KB
    • 可以包含复杂的数据结构
    • 不可以包含方法或者函数
  • 例子: var soMy:SharedObject = SharedObject.getLocal(“myCookie”); //保存为 myCookie.sol 的共享对象 //路径在 ~/Application Data/MacroMedia/FlashPlayer/#SharedOject/… soMy.data.user = “Jeff”; soMy.data.aUser = new Array(); soMy.data.bUser = employees as Array; soMy.flush(500); //设置SharedObject文件大小

Lesson 25 :调试Flex应用程序

  • 使用 Flex Builder/Flash Builder 调试,由于这个IDE就是基于Eclipse开发而来的,调试的操作没什么区别,和VisualStudio也很像,断点,单步调试,变量监视等等。
  • trace() 函数用于跟踪,打印调试信息;
  • try – catch 语法和java一样,没啥好说的。try – catch – finally , throw 这些。
  • 自定义错误类

Lesson 26:对Flex应用程序进行剖析

这章很重要,如果想写好的程序,必须要了解这些。

  • Flash Player 内存使用:通常想OS申请的空间会比所需要的要大,这样可以避免多次请求,同时也监视不再使用的内存,运行GC;
  • 参数传递的方式:
    • 值传递:Boolean,int,Number,String,uint 这些基元数据类型;
    • 按引用传递:对象;
  • 垃圾收集策略(GC)
  • GC 并不是发生在内存不再使用的时刻,而是发生在应用请求更多的内存时;
  • GC 检测机制
    • 引用计数:创建对象的引用时,计数器递增,删除引用则递减。为0时,成为GC的候选;
    • 标记-清除:FlashPlayer从应用顶层开始,标记每一个被引用的对象,持续向下深入。没有被标记的对象将成为GC的候选。
  • 如何防止内存泄漏
  • 理解事件监听函数导致的泄漏:广播事件的每个对象都维护着对监听该事件的每个对象的引用。使用addEventListener(),需使用removeEventListener。就像C++中new出来再delete掉一样。
  • 在监听函数中使用弱引用:addEventListener()的第5个参数指定为true;//weak reference
  • 使用Flash Builder Profile功能:
    • Memory profiling
    • Performance profiling