Phaser框架:为一个数组中的每个元素分配(和删除)一个sprite

时间:2015-08-08 17:10:30

标签: javascript phaser-framework

我有一个包含3个元素的数组,这些元素是从一个更大的数组中随机获取的(让我们想象一下,较大的数组是一个字母表,3个元素数组叫做currentChars)。

我想用current动画精灵表示currentChars数组中的每个字符,我通过函数完成了这个:

function animateChars(){
    y = 300;
    for (i=0; i<currentChars.length; i++){
        var shape = game.add.sprite(200,y,currentChars[i]);
        shape.animations.add('twinkle',null,25,true);
        shape.play('twinkle');
        y += 60;
    }
}

玩家进行输入,如果输入正确,则应从数组和游戏中删除元素及其精灵。

function searchAndRemove(input, arr)    {
    for(i = 0; i< arr.length; i++)  {
        if(arr[i] === input)    {
            arr.splice(i, 1);
            score += 1;
            scoreText.text = score;
            break;
        }
    }

但是,我还没有找到删除精灵的方法,因为元素已从数组中取出。理想情况下,当一个元素(及其精灵)被移除时,应保留另一个精灵的位置,但仍然,我仍然难倒。

1 个答案:

答案 0 :(得分:3)

Phaser.Sprite对象有destroy()方法,我认为这就是你要找的东西。但是你必须保持对创建的精灵对象的引用,以便以后删除它。

    myshapes[i] = game.add.sprite(200,y,currentChars[i]);

    //..

    if(arr[i] === input)    {
        myshapes[i].destroy(); // first destroy sprite
        arr.splice(i, 1); // then remove array item
        //etc.