AS3保持得分

时间:2014-02-21 03:22:40

标签: arrays actionscript-3

我正在制作一个游戏,我的角色会传递一个物体,当这样做时,分数会增加一个。该对象是数组的一部分,当我传递第一个对象时,分数会连续计数。以下是我到目前为止的情况:

if (beardman.x >= tubes[i].x)
{
 score++;
}

我如何重新编写它以使分数只增加一个?

1 个答案:

答案 0 :(得分:0)

你可以做的是拥有一个类似的数组,然后从列表中删除:

//assume you have a copy of the tubes array called activeTubes.
if (beardman.x >= activeTubes[i].x)
{
    score++;
    activeTubes.splice( i, 1 );
}

编辑:我想补充一点,拼接已知是一个相当昂贵的操作,因为它改变了索引存储在内存中的方式。话虽这么说,如果你正在搜索一个相当大的列表,那么优化将如下所示:

//assume you have a copy of the tubes array called activeTubes.
if (activeTubes[i] && beardman.x >= activeTubes[i].x)
{
    score++;
    activeTubes[i] = null;
}

甚至从for循环的角度来看:

var i:int;
for ( ; i < activeTubes.length; i++ ) {
    //check if the index is null, if so continue.
    if ( !activeTubes[i] ) { continue; }

    if (beardman.x >= activeTubes[i].x)
    {
        score++;
        activeTubes[i] = null;
    }
}