#timer thread
#-------以下:用户禁止访问-------
#定时器属性
var TimerHash =
{
#定时间隔
time : ,
#触发函数
trigFunc : nil,
#是否取消
cancel : ,
new : func (_time, _trigFunc, _cancel)
{
return { parents:[TimerHash],
time : _time,
trigFunc : _trigFunc,
cancel : _cancel
};
}
};
#存放所有的定时器
var TimerVec = [];
#定时器工作线程启动函数
var thread_timer_id = ;
var thread_func = func
{
var id = thread_timer_id;
var time1 = systime();
var time2 = time1;
while(!TimerVec[id].cancel)
{
time2 = systime();
if ((time2 - time1) >= TimerVec[id].time)
{
time1 = time2;
TimerVec[id].trigFunc();
}
}
};
#退出FlightGear时,停止所有的定时器
var stop_all_timer = func
{
for (var i = ; i < size(TimerVec); i += )
{
TimerVec[i].cancel = ;
}
};
_setlistener("/sim/signals/exit", stop_all_timer);
#-------以上:用户禁止访问-------
#-------提供给用户使用的定时器类-------
var TimerClass =
{
#-------以下:用户禁止访问-------
id : ,
#-------以上:用户禁止访问-------
new : func (_time, _trigFunc)
{
var tm = TimerHash.new(_time, _trigFunc, );
append(TimerVec, tm);
return { parents : [TimerClass],
id : size(TimerVec) - };
},
start : func
{
TimerVec[me.id].cancel = ;
thread_timer_id = me.id;
thread.newthread(thread_func);
},
stop : func
{
TimerVec[me.id].cancel = ;
}
};