Tag Archives: AS3技巧

在Flex Builer中嵌入Flash IDE的元件

Flash IDE:
1. 创建一个新的fla。
2. 制作元件。
3. 为元件设置导出类。
4. 发布。

Flex Builder:

茶饭后内部不完全ActionScript3编码规范 V0.1

声明:此文章基本上大概是差不多完全的参考了Adobe的Flex SDK编码规范。不算翻译也不算原创,只做内部参考文档使用。如有不详处请自行查阅原文。

1. 命名规范

命名语言
基于英文单词来命名,而不是无意义的字母组合或汉语拼音。

关于缩写
清楚的表达远比简短的缩写要重要,所以calculateOptimalValue()要比calcOptVal()好。非常常用的缩写除外。

单词边界
两种方式:intercaps命名法(LayoutManager或measuredWidth),underscores命名法(object_proxy)。

指定类型的名称
将类型放在最后一个单词。比如给一个带边框的Shape命名:border, borderSkin或borderShape,而不是border_mc。

Package命名
首字母小写,接下来按照intercaps命名法。比如:controls, listClasses。Package的名字必须是名词,而不能是动词,形容词或副词。

文件名
名称要与其内容相关。as文件使用intercaps命名法,比如ModalTransparencyStyles.as。资源文件使用underscores命名法,比如icon_align_left.png。

namespace命名
首字母小写,接下来按照underscores命名法。比如:mx_internal, object_proxy。

Interface命名
用I开头,接下来使用intercaps命名法。比如:IList, IFocusManager, IUID。

Class命名
首字母大写,接下来按照intercaps命名法。比如:Button, FocusManager, UIComponent。Event的子类叫FooBarEvent,Error的子类叫FooBarError。基类的名字一般 是:ComboBase, DateBase…

Event命名
首字母小写,接下来按照intercaps命名法。比如:\”move\”, \”creationComplete\”。

Style命名
首字母小写,接下来按照intercaps命名法。比如:color, fontSize。

常量命名
使用全部大写的字母和underscores命名法。比如:OFF, DEFAULT_WIDTH。

变量命名
首字母小写,接下来按照intercaps命名法。比如:i, width, numChildren。在for循环中使用i,j。在for-in循环中使用p。

成员变量命名
变量名前加下划线,首字母小写,接下来按照intercaps命名法。比如:_foo, _fooBar。

方法命名
首字母小写,接下来按照intercaps命名法。比如:measure(), updateDisplayList()。方法的名字应该是动词。

Event handler命名
事件处理器应该以\”Handler\”结尾。比如:mouseDownHandler()。如果要处理一个来自子组件的事件,应该在前面加上组件的名称和一个下划线。比如:textInput_focusInHandler()。

Argument命名
使用value作为setter函数的参数命名。使用event作为事件处理器参数的命名,而不是e或者evt。

2. 语法

类型声明
为每一个常量、变量、参数、返回值指定类型,如果不想指定类型,那么使用*。比如:var value:*; 不要var value;

使用紧缩的类型规则。比如,一个循环的计数器应该使用int,而不是Number,更不是Object或*。再比如,mouseDownHandler的参数应该是event:MouseEvent,而不是evetn:Event。

使用数组时,应该紧跟一个关于元素类型的注释,有助于阅读。比如:var a:Array /* for String */ = []; 而不是 var a:Array = [];

关于常量(Literals)
尽量不要使用undefined。
这样使用十六进制:0xFEDCBA而不是0Xfedcba。
指定RGB颜色时使用0x000000而不是0。
使用Number常量时,要0.0,1.0而不是0,1。
在像素坐标中,不要使用Number。
使用String常量时,要”what\’s up, \”Big Boy\”?”而不是’What\’s up, “Big boy”?’。
使用Array常量时,要[]而不是new Array(),要[1, 2, 3]而不是new Array(1, 2, 3)。
使用Object常量时, 要{}而不是new Object(),要o = {a: 1, b: 2, c: 3};而不是o = new Object(); o.a = 1; o.b = 2; o.c = 3;。
尽量不要使用函数常量。
使用RegExp常量时,要var pattern:RegExp = /d+/g;而不是var pattern:RegExp = new RegExp(\”\\d+\”, \”g\”);
使用XML常量时, 要var node:XML = <name first=\”Jane\” last=\”Doe\”/>;而不是var node:XML = new XML(\”<name first=\”Jane\” last=\”Doe\”/>\”);。
要var node:XML = <name first=\”Jane\” last=\”Doe\”/>;而不是var node:XML = <name first=\’Jane\’ last=\’Doe\’/>;

3. 代码格式

行宽度
在80个字符时换行。

缩进
使用4个空格来缩进,而不是Tab。可能需要配置你的代码编辑器。

主区块分隔符
//————————————————————————–
//
// Overridden methods
//
//————————————————————————–

次区块分隔符
//———————————-
// visible
//———————————-
在分隔符的上下各有一个空行。

声明分隔符
/**
* @private
* Holds something.
*/
var a:Number;
/**
* @private
*/
var b:Number

数组索引
要a[0]而不是a[ 0 ]。

逗号
逗号后面要跟一个空格。

类型声明
要var n:Number;而不是var n : Number;或 var n: Number;

赋值与运算符
在赋值运算符的两边各加一个空格。比如:要a = 1;而不是a=1;
在二元运算符两边各加一个空格。比如a + b * c而不是a+b*c。
在比较运算符两边各加一个空格。比如a == b而不是a==b。
在前缀运算符和操作数之间不要有空格。比如,要!o而不是! o。
在后缀运算符和操作数之间不要有空格。比如,要i++而不是i ++。

语句
为每一条语句开一个新行,这样你就可以在任何行加断点。
要这样
a = 1;
b = 2;
c = 3;
而不是这样
a = 1; b = 2; c = 3;
括号要上下对齐
要这样

而不是

if语句
在if后面紧跟一个空格,在左括号之后和右括号之前不要加空格。
要这样
if (a < b)
而不是
if(a < b)
if( a < b )
if ( a < b )

for语句
在for后面紧跟一个空格,在左括号之后和右括号之前不要加空格。
要这样
for (var i:int = 0; i < n; i++)
而不是
for(var i:int = 0; i < n; i++)
for( var i:int = 0; i < n; i++ )
for ( var i:int = 0; i < n; i++ )

在Flex Builder 3的ActionScript工程里面使用Flash的Tween类

最近开始用Flex Builder,开发人员嘛,还是用这个舒服。Flex框架的功能很强大,做RIA应用没的说,但对于开发游戏用处却不是很大,而且生成的swf文件会多出200KB左右。所以,我决定只建立ActionScript工程。然后问题就来了…

Flash中有一个类叫fl.transitions.Tween,用来做一些缩放或淡入淡出的特效很方便。但是此类在Flex中无法直接使用。 Google后看到有人说在Flex中可以用mx.effects.Tween这个类来代替,但是这个类也只能在Flex的工程中使用。难不成flash 中那么多方便的类都无法使用了么?难不成要自己写特效么?再找!

最终awflasher一篇文章让我又看到了希望。文章里的例子是如何在Flex的ActionScript工程中使用Flash CS3的控件。经过一番小试验,终于让我找到了解决办法:

1. 用Flash CS3创建一个新的fla文件,起名叫flTween吧。

2. 在第一帧里面写上如下代码:

3. 文件->导出->导出影片->保存->选择导出SWC->确定,这样就生成了一个flTween.swc。

4. 在Flex Builder 3中,右键单击你的工程根目录,选择Properties->ActionScript Build Path->Library path->Add SWC->选择刚才生成的flTween.swc文件。

5. 接下来你就可以在代码里面import fl.transitions.Tween;了。