连续删除数组项目(游戏障碍)
Deleting array items continuously (game obstacles)
我正在开发一款无尽的奔跑游戏,在这款游戏中,障碍是连续出现的,然后移到左边——所以,每个障碍在一秒钟左右的时间内对玩家来说都是不可见的,但随着游戏速度的增加,它不是任何特定的数字。
是否有一种方法可以删除每个障碍,例如,在它创建后三秒钟,以节省一些内存/加快游戏速度?
我使用了一个数组的全局定义,其中障碍物被存储:
var obstacles = []
然后我创建一个障碍:
function display(obstacle) {
obstacle.draw()
// the ".draw" function contains a simple "ctx.drawImage"
}
function display_loader(){
for(i in obstacles){
display(obstacles[i])
}
}
之后,我移动障碍物并检查它的位置是否与类似的函数发生碰撞。
你能给我一个提示,我怎么能保持数组包含最多3-5个项目?此外,它是否会对游戏速度产生一些影响(考虑到它是用于手机平台),还是完全没有必要?在开始游戏后清空数组是否足够?(游戏邦注:在一个游戏周期中最多可以创造100个道具)。如果是,我该如何清空这个数组呢?obstacles = []
够吗?
你可以用queue代替array,并且每次添加新元素时都要移动它,这样大小将是恒定的(代码示例取自这里):
var queue = [];
queue.push(2); // queue is now [2]
queue.push(5); // queue is now [2, 5]
var i = queue.shift(); // queue is now [5]
如果固定大小的队列是不够的-你跟踪当对象变得不可见?每个对象都有相应的坐标吗?你可以信赖这个信息什么时候进行队列移动,只有当项目变得不可见时才进行移动
如果你在屏幕上有一个固定的障碍物的最大数量,你可以使用一个数组作为循环缓冲区。分配一个固定大小的数组,并维护一个变量,告诉您数组从哪个索引"开始",一个变量告诉您有多少项是活动的。
这可能会给您带来额外的好处,因为您可能能够重用障碍对象,而不是分配和释放新的对象,从而减少垃圾收集的开销。
相关文章:
- 使用php或javascript从facebook相册URL中删除多余的部分
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 如何删除多行HTML排列中的空白
- 如何从rails中的代码中删除新行( )
- 删除对HTML元素的拖动
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 按顺序添加和删除类
- 如何有效地将游戏数据存储在URL查询字符串中
- iframe正在添加标签,需要删除它们
- 如何在HTML输入字段中添加不可删除的后缀
- addData()从最新图表中删除.js 2.1.3-怎么了
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 删除CKEditor工具栏按钮,但不删除功能
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 正在删除node.js中已验证的网站
- 正在从页面中删除iframe
- 如何从 HTML 查询中删除项目
- 删除画布游戏中的背景
- 连续删除数组项目(游戏障碍)