FlexUnit,Flex里的单元测试工具
搞了大半年的敏捷开发了,项目里使用测试驱动开发,不过是NUnit,现在试试FlexUnit,首先说下什么是测试驱动开发(TDD)
我们知道可以针对接口编程,首先把接口定好,然后各位开发的伙计都去调用接口,这样但实现被人改了之后(有意或无意或者未预料后果),就会发生错误,试想本来接口规定你去某个地方的一个商店买东西,但是有一天这个商店老板换人了,本来是卖肉,现在变卖米,结果你买的东西就不符合你老婆的要求了(等着挨骂吧)。。。。呵呵
写测试主要是提前把预先要的结果给想好,传个什么参数,必定会返回什么值 如:function Move(int a,int b):int
但传2,5,如果返回8,说明是对的,否则返回个6或者个其他什么的,都不行,测试通不过,程序员马上就要发飙了,大喊一声,“啊,测试有问题啊,我靠”,然后负责那个方法的人马上就得灰头土脸的去改正,值得说明的是,这个测试是他本人写的。
开始看看FlexUnit怎么用的。
2,随便建个Flex工程,加入FlexUnit包到此工程

3,随便写个类,写个方法

4,添加测试用例
5,测试运行,算了,直接上代码,具体注释
我的工程结构图:

CodeTime:
Protected: self join的问题
There is no excerpt because this is a protected post.
Flash Player的新的全屏模式
硬件缩放的用法
Flash Player Update 3的Stage对象追加了一个fullScreenSourceRect的属性。这个属性可以在AS2.0和AS3.0里使用。它把Rectangle的领域缩放为全屏。用fullScreenSourceRect指定领域用硬件来画,比以前的效率与画质高不少。
语法
fullScreenSourceRect : flash.geom.Rectangle;
全屏模式的例子:
//Actionscrīpt 3.0
import flash.geom.*;
public function fullScreen():void {
Stage["fullScreenSourceRect"] = new Rectangle(0, 0,
Stage.width, Stage.height);
Stage["displayState"] = "fullScreen";
}
在Flash CS3的类重新定义之前无法用Stage.fullScreenSourceRect的写法,会通不过编译。fullScreenSourceRect指定的领域在Stage外也可。
flash 事件流 与 元件层次 的关系
as3 事件机制
以前的事件处理模型:
onClipEvent() 直接写在 MovieClip instances 上的
Callback 函数 例如XML.onload 和 Camera.onActivity
addListener()方法 简单的事件监听
The UIEventDispatcher class 实现了部分 DOM event model.
as3有什么不同:
全部废除,只有addEventListener()一种了
listener只可以是methods或function,而且自带了Delegate(好多资料里都有写,这点就不讨论了)
多了event flow概念,就是说as2中只有广播者才能addEventListener,as3中即使object不发广播,只要它在event flow中都可以 addeventlistener
event flow:
事件源如果不在displaylist中,那么跟as2一样只能 事件源.addEventListner(“xxx” xxxfunc)
否则如果事件源是可视的,那么Flashplayer会把这个event object扔到事件源所处的displaylist中去
displaylist 是一个树型结构,可以想象为下图

,然后这个eventObject会自己旅游到事件源那去,然后再回来
event flow 就是描述eventObject在这个displaylist中的旅游过程
顶端是一个特殊的display object容器—- Stage,他表现在flash.display.Stage类中,然后每一个display object都有一个属性叫stage 都引用这个应用程序的Stage
event flow 概念上被分为3部分。
第一部分叫 capture 阶段 包括从Stage到目标的parent
第2 部分叫 target 阶段 就只有目标节点
地3 部分叫 bubbling 阶段 包括从目标的parent到Stage
前边说过如果事件源不在displaylist中,那么跟as2一样只能 事件源.addEventListner(“xxx” xxxfunc) 因为它就只参加 target阶段,1,3阶段都不参与
一些特殊的事件也是这样,例如enterFrame 和 init
否则该eventObject将参与这3个阶段
但在一般情况下,默认的addEventListener只监听event flow第 2,3阶段。
看个鼠标点击的例子 (点此下载)
good news,aggregated by adobe feeds
XMLRPC for Actionscript 3.0 – Free Library
http://danielmclaren.net/2007/08/03/xmlrpc-for-actionscript-30-free-library
Download XMLRPC for AS3
And without further ado, here are the source files:
Some notes:
- The license is LGPL
- The readme, changelog, tests, and examples are out of date.
- Here’s a link to the XML-RPC for AS2 project on SourceForge
- Gregory Goldberg also ported this project to AS3 but removed the fault handling in the process
ActionScript3 内存管理
AS3内存管理(垃圾回收 Garbage Collector) 【抄文】




