FlexUnit使用 Useing FlexUnit

Categories: Flex; Tagged with: ; @ October 31st, 2008 0:07

1.下载FlexUnit

[地址:http://opensource.adobe.com/wiki/display/flexunit/Downloads] 并在应用中加入库文件:

目前版本为0.9, 下载完解压缩之后, 在Flex或AIR工程的Flex Build Path的Library Path中加入FlexUnit.swc库文件.

2. 创建测试用例

待测试的单元:

package
{
public class SimpleConverter
{
	public function SimpleConverter() {
	}

	public function convertToString(i:int):String {
		var s:String = "错误!"
		if(i == 1) {
			s = "是";
		}else {
			s = "否";
		}
		return s;
	}

}
}

测试用例:

package
{
import flexunit.framework.Assert;
import flexunit.framework.TestCase;

public class TestSimpleConverter extends TestCase
{
	public function TestSimpleConverter(methodName:String=null) {
		super(methodName);
	}

	/**
	 * 测试用例
	 */
	 public function testSimpleConverter():void {
	 	var sc:SimpleConverter = new SimpleConverter();
	 	var s:String = sc.convertToString(1);
	 	Assert.assertEquals(sc.convertToString(1), "是");
	 }
}
}

3.在应用中加入测试用例:


		import flexunit.framework.TestSuite;
		private  function onCreateComplete():void {
			var ts:TestSuite = new TestSuite();
			ts.addTest(new TestSimpleConverter("testSimpleConverter"));
			testRunner.test = ts;
			testRunner.startTest();
		}

4.截图:

image

ActionScript中使用注释规范及ASDoc命令参数小结

Categories: Flex; Tagged with: ; @ October 24th, 2008 1:27

在没有使用ASDoc之前, 我的注释总是乱七八糟, 并且胡说八道. 该讲的没有讲清楚, 废话比代码还多. 自从抱着试试看的态度用了一下ASDoc, 俺决定认真参照公司的代码规范, 认真规范下俺不曾被规范的注释.

ActionScript注释生成工具很多, 但俺们就使用ASDoc.

首先, 总结下ActionScript注释规范:

常用的注释:
@param
@return
@throws
@see
如:

	/**
	 * 解析给定的I18N语言字符串, 并通过fieldStringToLocalizationItem将之转换为LocalizationItem对象,放入到ArrayCollection中.
	 * @example 处理里一串I18N语言字符串
	 *
	 * stringToAC('{zh=简体中文}{zh_tw="繁体中文"}', false);
	 * 
	 * @param s:String 待处理的字符串
	 * @param strict:Boolean 是否采用严格机制来处理, 默认为ture,意为如果字符串不合要求则报错; 可指定为False, 忽略错误,完成操作.
	 * @return 处理完后包含有LocalizationItem的ArrayCollection; 如果制定的字串为NULL,则返回一个空的ArrayCollection;
	 * @throws Error 如果strict为true,在检测到字符串不合要求时会throw Error.
	 * @see #fieldStringToLocalizationItem()
	 */
	public static function stringToLocalizationItems(s:String, strict:Boolean = true):ArrayCollection {
....
}

[这个文档写的很粗糙] 经过ASDoc生成后的文档如下:

image @see的用法

当需要see顶级类中的函数时
@see Array#pop(); (Method)
@see Array#length; (Property)

需要see本类某函数时,如需要see下本类的 fieldStringToLocalizationItem(fieldString:String, strict:Boolean = true)函数, 则:
@see #fieldStringToLocalizationItem().

关于@see的详细介绍: http://livedocs.adobe.com/flex/3/html/help.html?content=asdoc_7.html#188433
不足之处就是开发工具对注释的支持实在是不敢恭维.

另外总结下ASDoc里重要的配置参数

-source-path, 该path指明了源代码存放的位置

-doc-classes, 需要生成目录的类 , 在使用该变量之前必须已经声明-source-path;

如: asdoc -source-path . -doc-classes comps.GraphingWidget comps.GraphingWidgetTwo 则意味着生成当前目录下,comps\GraphingWidget .as 与comps\GraphingWidgetTwo.as的文档

-doc-sources: 指定某目录, 生成该目录及其子目录下所有.as文件的注释. 可以单独直接使用,也可以配合使用-source-path. 如:

doc-sources E:\\eclipse-jee-europa-fall2-win32_FB3\\eclipse\\workspace\\AIRTest\\com\\insprise

或配合使用:

-doc-sources   com\\insprise

-source-path   E:\\eclipse-jee-europa-fall2-win32_FB3\\eclipse\\workspace\\AIRTest\\com\\insprise

其他信息基本上都是无关紧要不痛不痒的一看明白.

可参照:http://liguoliang.com/2008/10/280/


通过ANT与ASDoc生成Flex文档

Categories: Flex; Tagged with: ; @ October 24th, 2008 0:33

需求: 透过工程注释自动化产生文档

分析:使用ANT进行自动化配置, 使用ASDoc产生注释

在所在工程中新建一个properties文件,用以保存相关配置, 同时建立一个bulid.xml, 用以提供ANT配置文件.

具体实现:

1:  为便于管理与配置, 将ASDoc的参数放置于一个properties文件中, 在本例中我们取名叫做: asdoc.properties
含如下信息:
FLEX_HOME = E:\\eclipse-jee-europa-fall2-win32_FB3\\eclipse\\FBPlug-in301\\sdks\\3.1.0
asdoc.exe  = E:\\eclipse-jee-europa-fall2-win32_FB3\\eclipse\\FBPlug-in301\\sdks\\3.1.0\\bin\\asdoc.exe
dir.docSource = com\\insprise\\localizationeditor
dir.src  = .
dir.output =  E:\\eclipse-jee-europa-fall2-win32_FB3\\eclipse\\workspace\\AIRTest\\doc
main.title = Test
window.title  =  test
footer  = Insprise Software

以上提供了ASDoc的路径, 源文件的目录, 文档输出目录, 以及文档的网页标题, 文档内标题, 文档页脚等信息.

2: Build.xml配置: [因代码高亮代码有误,导致bulid.xml显示有误,请参照网页源代码自行修正]


 
 
 
 
 
 
  
  
 
 
 
  
  
   
   
   
  
  
  
   	
  
 

ANT运行build.xml之后,将会自动生成文档到输出目录.

ASDoc具体的参数配置可参见:http://liguoliang.com/2008/10/286/

当ANT编译成功后,会出现如下提示[这个是在Eclipse中使用ANT编译后的输出信息]:

Buildfile: E:\eclipse-jee-europa-fall2-win32_FB3\eclipse\workspace\AIRTest\src\build.xml

clean_Old_Docs:

   [delete] Deleting directory E:\eclipse-jee-europa-fall2-win32_FB3\eclipse\workspace\AIRTest\doc

    [mkdir] Created dir: E:\eclipse-jee-europa-fall2-win32_FB3\eclipse\workspace\AIRTest\doc

create_Docs:

     [exec] Loading configuration file E:\eclipse-jee-europa-fall2-win32_FB3\eclipse\FBPlug-in301\sdks\3.1.0\frameworks\flex-config.xml

     [exec] Documentation was created in E:\eclipse-jee-europa-fall2-win32_FB3\eclipse\workspace\AIRTest\doc\

main:

BUILD SUCCESSFUL

Total time: 26 seconds

AIR中使用:程序菜单,上下文菜单,右键菜单

Categories: Flex; Tagged with: ; @ October 21st, 2008 11:51

与窗口一样, 在一个AIR应用中, 菜单也是不可或缺的.

虽然在AIR中菜单有多种实现方式, 但是所有的Menu都是相同的,只是其实现方式不同而已,因此, 我们建立一个菜单, 使用不同的方式实现:

var menuFile:NativeMenu = new NativeMenu();
//如果需要在选择save时进行处理,则监听Event.SELECT事件, 如:save.addEventListener
var save:NativeMenuItem = new NativeMenuItem("Save");
var close:NativeMenuItem = new NativeMenuItem("Close");
menuFile.items = [save, close];

1. Window Menus [Windows平台下]

在苹果里叫做application menus, 不过本质都是相同的NativeMenu. 没有苹果机, 只说说Windows下的Window Menus. 当然也可以检查系统是否支持NativeMenu,或是application menus, 如:

if(NativeWindow.supportsMenu) ;

注意: 如果要在窗口中使用Window Menus , 他的配置文件或属性中systemChrome必须设置为"standard",否则将在编译时发生错误.

Window Menus的实现:

 if(NativeWindow.supportsMenu) { //检测是否支持Window menu
	var mainMenu:NativeMenu = new NativeMenu();
	mainMenu.addSubmenu(menuFile,"File"); //加入子菜单
	nativeWindow.menu = mainMenu; //将菜单加入到程序中.
}	

效果:

image

2.Context Menus 上下文菜单

我们可以给AIR程序中的Flash或基于Flash的对象设置Context Menu. 注意:

1. 在AIR中, Context Menu是 NativeMenu的实例, 而在Web应用中[Flex], 它是ContextMenu的实例

2. Context Menu可以在AIR应用之上或超出其范围显示. 它是系统级别的.

Context Menu的实现:

buttonOpen.contextMenu = menuFile;

效果:

image

3.Pop-Up Menus

你可以通过编程方式在任何时候使用Pop-Up Menus, 一般情况下,在用户按下某个键, 或是点击鼠标后弹出Pop-UpMenus. 不论是何种方式, 只需要运行NativeMenu实例的display()方法,将Pop-Up Menu显示便可.

监听textInput的右键Down事件:

textInput.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN, onTextInputClicked);

该事件的响应函数,将会阻止在textInput中右键的默认菜单, 将其菜单换做上面我们定义的menuFile. 该响应函数如下:

private function onTextInputClicked(e:MouseEvent):void {
	e.preventDefault();
		menuFile.display(stage, mouseX, mouseY);
}

效果:

image

AIR中关闭所有打开的窗口

Categories: Flex; Tagged with: ; @ October 21st, 2008 10:18

在AIR工程中, 如果新建某个窗口, 当关闭主窗口时, 新窗口并不随着主窗口的关闭而关闭, 但是在很多情况下. 我们需要在主窗口关闭时, 所有的子窗口都一起关闭.

为了达到这个效果, 我们监听主窗口的Event.CLOSING事件, 当用户点击主窗口关闭按钮或是单击任务栏右键时, 我们采取一定措施, 关闭所有窗口.

在AIR中,openedWindows是一个包括了所有当前打开的窗口滴数组. 因此遍历该数组,将所有元素都关闭便可达到目的.

故Event.CLOSING的监听函数可以这么写:

/**主窗口点击关闭时,关闭所有打开的窗口*/
private function onMainWindowClose(e:Event):void {
	var wds:Array = NativeApplication.nativeApplication.openedWindows;
	for (var i:int = 0; i

运行代码,点击主窗口关闭按钮或是任务栏右键关闭时,所有窗口都将关闭.

另外,如果仅需要关闭主窗口之外的所有窗口, 可以在for循环结束之后增加e.preventDefault(),同时for循环修改为:

for (var i:int = 1; i

以阻止主窗口关闭,达到关闭其他窗口,保留主窗口的目的.

Newer Posts <-> Older Posts



// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.