首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从滴答器中移除函数的特定实例

从滴答器中移除函数的特定实例
EN

Stack Overflow用户
提问于 2021-10-10 19:48:35
回答 1查看 721关注 0票数 0

目前正在使用Pixi.js玩一个非常简单的游戏,我遇到了一个问题。

一旦从舞台上删除了一个特定的sprite,我就需要从滴答器中删除一个函数的特定实例。

当空格按下时,我调用createBullet()

代码语言:javascript
运行
复制
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()添加到滴答器中

代码语言:javascript
运行
复制
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是否为null,并在b从舞台上删除后将b设置为null。然后使用moveBullet ()而不是add()将addOnce添加到代码块中。这是行不通的。

我知道我可以使用ticker.remove()删除一个滴答,但我不知道如何删除moveBullet函数的一个特定实例。

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-10 20:08:21

我在发帖几分钟后发现了这个问题,所以我会发布我的解决方案,以防它对未来的任何人有所帮助。

我的第一个错误是使用应用程序滴答器。相反,我的createBullet()函数现在为每个项目创建一个新的标记符。当子弹超出界限时,moveBullet()就会销毁这个代码。

代码语言:javascript
运行
复制
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()
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69518512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档