Thread类-Flash中的线程概念
在最近Flash开发过程中,发现定时运行函数(setInterval)使用频率非常高,但这个方法用多了就比较混乱,不易管理,就要更好的方法了。然后我和同事商讨一个比较好的解决方案。我们就发现Java中线程是比较好的方法,于是我们就参照Java的Thread类,就写一个Flash的Thread类,这个类调用起来多了一两行代码,但是比较好控制和管理。和Java中Thread类非常相似。今天我也把它贴出来,希望对大家有一些帮助!以下是Thread.as代码片段:
这个类不需要改直接使用;
/*
*Name:Thread.as
*Auther:Kinglong
*Email:kinglong@gmail.com
*Date:2005-04-20
*Desc:
*线程的基类;
*/
classcom.klstudio.util.ThreadextendsObject{
privatevar__mar:Number;
privatevar__sleep_time:Number;
functionThread(sleepTime:Number){
if(sleepTime==undefined){
this.__sleep_time=50;
}else{
this.__sleep_time=sleepTime;
}
}
privatefunctiondoRun():Void{
this.run();
}
publicfunctionrun():Void{
}
publicfunctionstart():Void{
this.__mar=setInterval(this,"doRun",this.__sleep_time);
}
publicfunctionstop():Void{
clearInterval(this.__mar);
}
publicfunctionsetSleepTime(sleepTime:Number):Void{
this.__sleep_time=sleepTime;
}
publicfunctiongetSleepTime():Number{
returnthis.__sleep_time;
}
}
以下是testThread.as代码片段:
importcom.klstudio.util.Thread;
classtestThreadextendsThread{
privatevar__label_txt:TextField;
functiontestThread(){
super(1000);
this.init();
}
privatefunctioninit():Void{
_root.createTextField("label_txt",4,0,0,100,20);
this.__label_txt=_root["label_txt"];
this.initLabel();
this.start();
}
privatefunctioninitLabel():Void{
this.__label_txt.autoSize="left";
this.__label_txt.html=false;
this.__label_txt.textColor=0x000000;
this.__label_txt.wordWrap=false;
this.__label_txt.type="dynamic";
this.__label_txt.selectable=false;
}
privatefunctionrun():Void{
vartoday:Date=newDate();
varlbl:String=(today.getHours()<10?"0"+today.getHours():today.getHours())+":"+(today.getMinutes()<10?"0"+today.getMinutes():today.getMinutes())+":"+(today.getSeconds()<10?"0"+today.getSeconds():today.getSeconds());
this.__label_txt.text=lbl;
}
}
以下是Flash调用代码片段:
stop();
vartt:testThread=newtestThread();
页:
[1]