模板,可用于制作各种单计时器循环操作数据的系统.
比如中心计时器,单计时器弹幕等.
比传统处理方法的优点是:
1, 回收数据不需要大量操作. (单一线性存储回收时, 需要设置每个数据变量的值)
2, 回收数据不会对其他数据的id造成影响 (用单一线性存储来循环的话, 你无法保证在循环期间的id不变, 因为删除id会使最后一个id的位置变化) 于是你可以在循环期间使用id来对数据做一定的改变
library DateTemplate initializer onInit
#define TIMER_TIMEOUT=0.03 //计时器的循环时间
private integer array Data_Index
private integer array Index
private integer CreateDataId(){
if(Data_Index[++Data_Index[0]]==0){return Data_Index[0]}
return Data_Index[Data_Index[0]]
}
private nothing DestroyDataId(integer id){
//TODO: 将清理以id索引数据的代码写在这里
Data_Index[Data_Index[0]--]=id
}
private nothing DeleteId(integer id){
DestroyDataId(Index[id])
Index[id]=Index[Index[0]--]
}
private integer NewId(){
Index[++Index[0]]=CreateDataId()
return Index[Index[0]]
}
//新建一个数据存储项
public integer New(){//TODO:修改自己的参数列表
integer id=NewId()
//TODO: 使用id作为变量组索引来存储数据
return id //此id在循环期间不会发生变化,
}
private nothing update(){
integer id
integer i=Index[0]
loop{exitwhen i<=0;set id=Index[i]
//TODO:在此使用id作为变量组索引来操作数据
//TODO:在达到删除条件时使用 DeleteId(i) 来删除
--i}
}
private nothing onInit(){
TimerStart(CreateTimer(),TIMER_TIMEOUT,true,function update)
}
endlibrary
比如中心计时器,单计时器弹幕等.
比传统处理方法的优点是:
1, 回收数据不需要大量操作. (单一线性存储回收时, 需要设置每个数据变量的值)
2, 回收数据不会对其他数据的id造成影响 (用单一线性存储来循环的话, 你无法保证在循环期间的id不变, 因为删除id会使最后一个id的位置变化) 于是你可以在循环期间使用id来对数据做一定的改变
library DateTemplate initializer onInit
#define TIMER_TIMEOUT=0.03 //计时器的循环时间
private integer array Data_Index
private integer array Index
private integer CreateDataId(){
if(Data_Index[++Data_Index[0]]==0){return Data_Index[0]}
return Data_Index[Data_Index[0]]
}
private nothing DestroyDataId(integer id){
//TODO: 将清理以id索引数据的代码写在这里
Data_Index[Data_Index[0]--]=id
}
private nothing DeleteId(integer id){
DestroyDataId(Index[id])
Index[id]=Index[Index[0]--]
}
private integer NewId(){
Index[++Index[0]]=CreateDataId()
return Index[Index[0]]
}
//新建一个数据存储项
public integer New(){//TODO:修改自己的参数列表
integer id=NewId()
//TODO: 使用id作为变量组索引来存储数据
return id //此id在循环期间不会发生变化,
}
private nothing update(){
integer id
integer i=Index[0]
loop{exitwhen i<=0;set id=Index[i]
//TODO:在此使用id作为变量组索引来操作数据
//TODO:在达到删除条件时使用 DeleteId(i) 来删除
--i}
}
private nothing onInit(){
TimerStart(CreateTimer(),TIMER_TIMEOUT,true,function update)
}
endlibrary