使用arraybuffers存储画布渲染数据

时间:2014-06-04 21:53:10

标签: javascript canvas arraybuffer

画布效果

最近我在画布中创建了很多动画,而且由于画布没有事件,你需要根据坐标创建自己的事件系统,简而言之,你需要一个碰撞检测功能。由于大多数代码很长,我重写了我自己这样做,我不知道它有多简单。所以我写了一些游戏代码。

基本上画布游戏有很多临时数字数组,在大多数情况下,0到64,128或256之间的数字就足够了。可能减少并用作乘数

hitpoints=max*(number/256);

所以我在想如果我将这些值存储到arraybuffer怎么办?

var array = new Float64Array(8);
array[0] = 10;
//....

示例:(我这样做......如果你知道更好的事情,请随时告诉我)

//Usable ammonition
var ammo=[
 ['missiles',dmg,range,radius,red,green,blue,duration],
 //all appart the first are numbers between 0 and 255
 ['projectile',dmg,range,radius,red,green,blue,duration]
]
//Flying ammonition
//this is created inside the canvas animation everytime you shoot.
var tempAmmo=[
 [id,timestarted,x,y,timepassed] //these are all integers.
 // the longest is probably  the timestamp
]
// i could add the ammo numbers to the tempAmmo (which is faster):
[id,timestarted,x,y,timepassed,dmg,range,radius,red,green,blue,duration]

// then i do the same double array for enemies and flyingEnemies.

将所有东西存放在arrabuffers中不是更好吗?

我的想法(如果我错了,请纠正我):

arraybuffers是二进制数据,

它们应该更快用于渲染,它们应该更小  为了记忆。

现在,如果这两个观点是正确的,我如何正确创建一个像所描述的那样的数组结构,可能选择正确的数组类型?

注意:在我的情况下,我正在使用二维数组。而且我不想使用对象。

0 个答案:

没有答案