我有一个函数可以在onClick事件上做点什么。
function onDocumentMouseUp( event ) {
createsprite(clickedposition);
}
createsprite(clickedposition) {
var sprite = JSONSPITE // this add correctly sprite to my scene;
//// here timer function 1 sec
setTimeout(function(){ remove(sprite); }, 1000);
}
一切正常。
但是当我不止一次点击时,我仍然将我的变量精灵作为最后添加的精灵。 (是的,我知道这是正确的)。逻辑上remove()
仅影响了最后一个。
使用未知数量的相同变量处理工作的正确解决方案是什么。 目的是它也按照创建顺序逐个点击一秒后删除每个精灵。
如果在同一个函数中只有一个变量,即使每个函数init上有更多具有相同名称的变量,也是如此。
答案 0 :(得分:1)
您已将sprite
定义为全局变量。它不仅存在于该函数中,而且还存在于窗口对象上。
如果你只想删除你在该函数中创建的精灵,你应该把它变成一个变量
var sprite = JSONSPITE; // typo?
这样,sprite变量的范围就是那个函数。
编辑: OP改变了他们的问题,使之前的解释显得过时
如果你想创建多个精灵,并将它们存储在某个地方,以便在删除之前可以访问它们,你可能想要创建一个精灵数组。
sprites = [];
function onDocumentMouseUp( event ) {
createsprite(clickedposition);
}
function createsprite(clickedposition) {
sprites.push(JSONSPITE); // Adds the current sprite to the end of the array
setTimeout(function(){
var firstSprite = sprites.shift(); // Takes the first sprite out of the array
remove(firstSprite);
}, 1000);
}