【问题标题】:Removing a specific instance of a function from ticker从股票代码中删除函数的特定实例
【发布时间】: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


    【解决方案1】:

    我在发布后几分钟就想通了,所以我会发布我的解决方案,以防将来对任何人有帮助。

    我最初的错误是使用应用程序代码。相反,我的 createBullet() 函数现在为每个项目符号创建一个新的代码。当子弹移出边界时, moveBullet() 会破坏该股票行情。

    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);
        const bullet_ticker = new PIXI.Ticker
        bullet_ticker.add((delta) => { moveBullet(delta, bullet, bullet_ticker) })
        bullet_ticker.start()
    }
    
    function moveBullet(delta, b, ticker) {
        // move bullet
        b.y += (-BULLETSPEED * delta)
    
        // delete bullet once out of bounds and remove its ticker
        if (b.y < -10)
        {
            app.stage.removeChild(b);
            ticker.destroy()
        }
    }
    

    【讨论】:

    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多