Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Phaser sprite.kill()有时并不';行不通_Javascript_Html_Phaser Framework - Fatal编程技术网

Javascript Phaser sprite.kill()有时并不';行不通

Javascript Phaser sprite.kill()有时并不';行不通,javascript,html,phaser-framework,Javascript,Html,Phaser Framework,我正在用phaser编写一些游戏,我在使用方法sprite.kill()时遇到了一个问题 有时当我调用sprite.kill()时,移相器似乎会因为碰撞/重叠而破坏身体,但视觉元素(图像和可拖动对象)仍在屏幕上。 我通过foreach为所有对象设置了重叠方法: garbList.forEach(function(g) {

我正在用phaser编写一些游戏,我在使用方法sprite.kill()时遇到了一个问题

有时当我调用sprite.kill()时,移相器似乎会因为碰撞/重叠而破坏身体,但视觉元素(图像和可拖动对象)仍在屏幕上。

我通过foreach为所有对象设置了重叠方法:

garbList.forEach(function(g) {                                                                                                    
    trashList.forEach(function(t) {                                                                                               
        game.physics.arcade.overlap(g.sprite, t.sprite, garbHitTrash);                                                            
    });                                                                                                                           
});
我有一个垃圾商和一个垃圾清单,他们有一个重叠的方法叫garbHitTrash

当Garbhittras被称为Garbhittras时,它只是“把垃圾扔到垃圾桶上”,破坏它的精灵,然后从当时的garbList那里弹出它

function garbHitTrash(garb, trash) {
    if(garb.trash === trash.type) {                                                                                                   
        result['acertos']++;                                                                                                          
    } else {                                                                                                                          
        result['erros']++;                                                                                                            
    }                                                                                                                                 
    garb.kill();                                                                                                                      
    popGarbage(garb)                                                                                                                  
    console.log('garbList.length ' + garbList.length);                                                                                
}

如果需要完全删除元素,请查看
destroy
方法,而不是
kill
。调用
kill
只是将某些属性设置为
false
(如
alive
visible
)的简写。但是,由于您的对象仍然存在并且仍在移动(我想是由于碰撞),这些属性可能会由另一个组件设置或重置。

可能会晚一点,但我只是遇到了类似的问题

比方说我不想在foo里杀一个

目前,我不知道这是为什么。但是,如果你杀死或摧毁第二件物品,效果会更好

game.physics.arcade.collide(a, b, foo);//funky behavior
game.physics.arcade.collide(b, a, foo);//works as intended