javascript - Phaser,删除越界 Sprite

标签 javascript sprite phaser-framework

我找到了一些垃圾收集器的代码示例,用于删除屏幕外的 Sprite ,但它仅适用于旧版本的 Phaser。
如何将此代码从 v1.1.5 重建到 v2.0.4?
错误代码:

Phaser v2.0.3 - WebGL - WebAudio     http://phaser.io    ♥♥♥  phaser.min.js:8
Uncaught TypeError: Cannot read property 'reset' of null (index):34
    add_cloud (index):34
    b.Timer.update phaser.min.js:12
    b.Time.update phaser.min.js:12
    b.Game.update phaser.min.js:8
    b.RequestAnimationFrame.updateRAF phaser.min.js:11
    window.requestAnimationFrame.forceSetTimeOut._onLoop phaser.min.js:11

Code that work on older version (v1.1.5):

<script>
    var game = new Phaser.Game(800, 480, Phaser.AUTO, '', { preload: preload, create: create, update: update });
    var clouds;
    var cloud_dummy;

    function preload() {
        game.load.image('mario_cloud', 'mario_cloud.png');
    }

    function create() {
        clouds = game.add.group();
        clouds.enableBody = true;
        clouds.createMultiple( 6, 'mario_cloud');

        timer_shit = game.time.events.loop(1500, add_cloud, this);
    }
    function update() {

    }
    function add_cloud() {
        cloud_dummy = clouds.getFirstDead();
        cloud_dummy.reset(800, 100);
        cloud_dummy.body.velocity.x -= 150;
        cloud_dummy.body.immovable = true;
        cloud_dummy.outOfBoundsKill = true;
    }
</script>

最佳答案

错误代码告诉您“clouds”组中没有属性为“alive”= false 的子项。

这就是这一行的原因。

cloud_dummy.reset(800, 100);

你有一个“null”。

原因可能是首先你的游戏性能比以前更差了,所以这个例子中的云同时出现在游戏 Canvas 内。

因为这条线正在做什么

cloud_dummy.outOfBoundsKill = true;

当元素离开游戏的可见部分时,属性“alive”被设置为 false。

您可以尝试做的就是像这样在组中添加更多 child

clouds.createMultiple( 50, 'mario_cloud');

但我记得我有一个类似的问题,我被迫最初将属性“alive”设置为 true。

检查这个link了解如何更改组中的每个子项..

您可以在最初创建组后执行类似的操作

forEach(function(child){
child.alive = true;
}, this, false)

关于javascript - Phaser,删除越界 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23436124/

相关文章:

javascript - 连续激活div

ios - Sprite Kit 如何让网格中的特定节点执行操作?

javascript - Phaser 3 中移动蒙版的问题

npm - 对 TypeScript 使用 "require(...)"的方式感到困惑

javascript - Tilemap 碰撞在 Phaser 中不起作用

javascript - 与js中的__proto_和prototype混淆

javascript - 为什么 Service Worker 的消息永远不会到达客户端

javascript - 解开包装在 voidptr_t 中的 UInt64

css - 如何创建一个像单个图像一样水平和垂直拉伸(stretch)的图像 Sprite ?

css - 我可以在 960 网格系统中使用 Sprite 图像吗?