Applicationxmlns:
mx="initialize="init(event)">
Buttonid="btn1"label="Clickme"click="clickbtn(event)"/>
Script>
[CDATA[
importmx.events.FlexEvent;
importmx.controls.Alert;
importflash.events.TimerEvent;
importflash.utils.Timer;
[Bindable]
privatevartimer:
Timer
[Bindable]
privatevarflag:
Boolean
[Bindable]
privatevarnum:
int
privatefunctioninit(event:
FlexEvent):
void{
num=0;
flag=true;
timer=newTimer(1000,1); //这里用Timer来设置按时间。
timer.addEventListener("timer",timerCom);
}
privatefunctionclickbtn(event:
MouseEvent):
void{
if(flag==true){
txt.text=(++num).toString();
flag=false;
timer.start();
}
}
privatefunctiontimerCom(event:
TimerEvent):
void{
flag=true;
}
]]>
Script>
Textid="txt">
Text>
Application>
关于Flex及AS3的百多条小小知识
(一)
【改变输出swf的尺度,背景颜色或帧频】
在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScriptCompiler">在"Additionalcompilerarguments"里输入你所需要的命令
如想改变背景颜色,请输入:
-default-background-color0xffffff
【鼠标坐标】
mouseXmouseY
【检查变量类型并返回布尔值】
Is
【检查变量类型并返回类型】
Typeof
【检查对象类型并返回该对象】
As
【是数字但不是有效数字问题】
varquantity:
Number=15-"rabbits";
trace(typeofquantity);//显示:
"number",但它是NaN(notanumber)
trace(quantityisNumber);//true
trace(quantity!
=NaN);//false
//使用isNaN()函数检测:
isNaN(quantity);//true
//检测变量是否内含有效数字:
!
isNaN(quantity);//false
【取消默认的严格编译模式】
在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScriptCompiler">取消"Enabelcompile-timetypechecking"选项
【基元数据类型和复杂数据类型好比"值类型"和"引用类型"】
基元数据类型类似按值传递:
varintOne:
int=1;
varintTwo:
int=1;
trace(intOne==intTwo);//true
【复杂数据类型类似按引用传递】
vararrayOne:
Array=newArray("a","b");
vararrayTwo:
Array=arrayOne;
trace(arrayOne==arrayTwo);//true
//-----------------------------------
vararrayOne:
Array=newArray("a","b");
vararrayTwo:
Array=newArray("a","b");
trace(arrayOne==arrayTwo);//false
【优化逻辑AND(&&)和OR(||)的小知识】
对于逻辑And(&&):
除非条件表达式的前半部分为真,否则,ActionScript不会再去求算逻辑AND运算符的后半部.如果前半部为假,整个条件表达式一定为假,所以再去求算后半部就没效率了.
对于逻辑OR(||):
除非条件表达式前半部为假,否则,ActionScript不会再去求算逻辑OR运算符的后半部,如果前半部为真,整个条件表达式一定为真.
总结:
使用逻辑AND(&&)时,把结果最可能为false的表达式放到前面;使用逻辑OR(||)时,把结果最可能为true的表达式放到前面.
【Timer类注意事项】
不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.
【private,protected,internal,public访问权限】
private:
只能在类本身内部访问,按惯例,命名私有成员时以下划线"_"开头;
protected:
可以由类本身或任何子类访问.但这是以实例为基础的.换言之,类实例可以访问自己的保护成员或者父类的保护成员,但不能访问相同类的其它实例的保护成员,按惯例,命名保护成员时以下划线"_"开头;
internal:
可以由类本身或者相同包内的任何类访问;
public:
可以在类内部访问,也可以由类实例访问,或者声明为static时,可以直接从类访问.
【一个函数具有未知个数的参数,用arguments对象或"...(rest)"符号访问它的参数】
注意:
使用"...(rest)"参数会使arguments对象不可用;
privatefuncitonaverage():
void{
trace(arguments.length);//输出参数的个数
//arguments的类型是:
object,但可以像访问数组一样去访问它
trace(arguments[1]);//输出第二个参数
}
privatefunctionaverage(...argu):
void{
trace(argu[1]);//输出第二个参数,argu参数名是自定义的.
}
【错误处理try,catch,finally】
privatefunctiontryError():
void{
try{
trace("测试开始-try");
throwError();
}catch(errObject:
Error){
trace("错误信息:
"+errObject.message);
trace("测试结束-catch");
return;
}finally{
trace("虽然catch里已经有return方法,但位于return方法后面的finally里的代码依然会被执行.其实无论return方法是在try里,还是catch里,finally里的代码始终会被执行");
}
trace("前面已经有return了,此处是不会再执行的.除非没有抛出错误,以使catch里的代码没有被执行");
}
privatefunctionthrowError():
void{
thrownewError("抛出错误");
}
【for...in与foreach...in的区别】
与for...in循环不同的是,foreach...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).
【命名包路径的小技巧】
使用相应于拥有者和相关项目的包名称会比较好.按惯例来讲,包名称的开头应该是逆向的网址名称.例如,如果ExampleCorp()写了一些ActionScript3.0类,就会把所有类放在com.examplecorp包内(或者com.examplecorp的子包内).如此一来,如果英国有另一家ExampleCorp(examplecorp.co.uk)也写了一些ActionScript3.0类,只要使用包uk.co.examplecorp,就可确保唯一性.
当类属于特定应用程序的一部分时,就应该放在该应用程序特定的子包内.例如,ExampleCorp可能有个应用程序名叫WidgetStore.如果WidgetStore应用程序使用一个名为ApplicationManager的类,则此类就应该放在com.examplecorp.widgetstore包内,或者位于该包的子包内.
按惯例来说,包名称的开头是小写字母.
【隐式的取出方法(getter)和设定方法(setter)】
publicfunctiongetcount():
uint{
return_count;
}
publicfunctionsetcount(value:
uint):
uint{
if(value<100){
_count=value;
}else{
throwError();
}
}
【确保类是绝不会有子类,使用final】
finalpublicclassExample{}
【super关键字的使用】
super();//父类的构造函数,只能在类实例构造函数内部使用
super.propertyName;//调用父类的属性,属性需要声明为public或protected
super.methodName();//调用父类的方法,方法需要声明为public或protected
【建立常数,使用关键字const而不是var】
staticpublicconstEXAMPLE:
String="example";
【检测播放器版本】
flash.system.Capabilities.version
对于8.5版以前的任何FlashPlayer版本,这种方法都不适用.
【判断客户端系统】
flash.system.Capabilities.os
【检测播放器类型】
flash.system.Capabilities.playerType
可能的值有:
"StandAlone",用于独立的FlashPlayer
"External",用于外部的FlashPlayer或处于测试模式下
"PlugIn",用于FlashPlayer浏览器插件
"ActiveX",用于MicrosoftInternetExplorer使用的FlashPlayerActiveX控件
【检测系统语言】
flash.system.Capabilities.language
【判断用户是否启用了IME(输入法编辑器)】
flash.system.IME.enabled
【检测屏幕的分辨率】
flash.system.Capabilities.screenResolutionX
flash.system.Capabilities.screenResolutionY
【把弹出窗口居中的算法】
X=(舞台宽/2)-(窗口宽/2)
Y=(舞台高/2)-(窗口高/2)
【控制影片配合Player的方式,包括缩放问题】
stage.scaleMode
可供选择值:
flash.display.StageScaleMode
【舞台的对齐方式】
stage.align
可供选择值:
flash.display.StageAlign
【隐藏FlashPlayer的右键菜单】
stage.showDefaultContextMenu=false;
【检测系统是否具有音频功能】
flash.system.Capabilities.hasAudio
【检测播放器是在具有MP3解码器的系统上运行,还是在没有MP3解码器的系统上运行】
flash.system.Capabilities.hasMP3
【检测播放器能(true)还是不能(false)播放流式视频】
flash.system.Capabilities.hasStreamingVideo
【检测播放器是在支持(true)嵌入视频的系统上运行,还是在不支持(false)嵌入视频的系统上运行】
flash.system.Capab