gpt4 book ai didi

javascript - Phaser,删除越界 Sprite

转载 作者:行者123 更新时间:2023-11-28 08:17:33 27 4
gpt4 key购买 nike

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

Phaser v2.0.3 - WebGL - WebAudio     http://phaser.io    ♥♥♥  phaser.min.js:8Uncaught 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com