【发布时间】:2021-10-11 04:08:21
【问题描述】:
目前正在使用 Pixi.js 开发一个非常简单的游戏,但我遇到了一个问题。
一旦从舞台上删除了特定的精灵,我需要从代码中删除函数的特定实例。
按下空格时,我调用 createBullet()
function createBullet(sheet, sprite) {
const bullet = new PIXI.Sprite(sheet.textures["sample.png"]);
bullet.x = sprite.x
bullet.y = sprite.y + 10
bullet.height = bullet.height / 5
bullet.width = bullet.width / 5
app.stage.addChild(bullet);
bullet.ticker.add((delta) => { moveBullet(delta, bullet) })
}
createBullet 创建一个新精灵,将其添加到舞台,然后将 moveBullet() 添加到代码中
function moveBullet(delta, b) {
// move bullet
b.y += (-BULLETSPEED * delta)
// delete bullet once out of bounds
if (b.y < -10)
{
app.stage.removeChild(b);
}
}
一旦子弹从舞台上移除,我希望从代码中移除 moveBullet()。
我尝试在 moveBullet() 中放置一个 while 循环,以检查 b 是否不为空,并在将 b 从舞台上移除后将其设置为空。然后使用 addOnce() 而不是 add() 将 moveBullet 添加到代码中。这不起作用。
我知道我可以使用 ticker.remove() 来删除刻度,但我不确定如何删除 moveBullet 函数的特定实例。
我该怎么做呢?
【问题讨论】:
标签: javascript pixi.js