javascript - 容器在由“new”关键字声明时不呈现子项(Phaser 3)
问题描述
我正在尝试Container
使用new
关键字声明代码模块化(参考这篇文章)。但是,当我用 声明一个时new Container()
,它不会呈现其子图像/精灵。我在这里做错了什么?请在下面查看我的代码:
var config = {
type: Phaser.AUTO,
width: 800,
height: 600,
backgroundColor: '#010101',
parent: 'phaser-example',
physics: {
default: 'arcade',
arcade: {
gravity: { y: 200 },
debug: true
}
},
scene: {
preload: preload,
create: create
}
};
var container1, container2;
var game = new Phaser.Game(config);
function preload () {
this.load.image('mushroom', 'assets/sprites/mushroom2.png');
this.load.image('lemming', 'assets/sprites/lemming.png');
}
function create () {
var image1 = this.add.image(-40, 0, 'mushroom');
var image2 = this.add.image(40, 0, 'lemming');
container1 = this.add.container(100, 200);
container1.add(image1);
container1.setSize(128, 64);
this.physics.world.enable(container1);
container1.body.setVelocity(0, 200).setBounce(1, 1).setCollideWorldBounds(true);
container2 = new Phaser.GameObjects.Container(this, 300, 200)
container2.add(image2);
container2.setSize(128, 64);
this.physics.world.enable(container2);
container2.body.setVelocity(0, 200).setBounce(1, 1).setCollideWorldBounds(true);
// container1 renders image1, but container2 doesn't render image2.
console.log(this.add.image, Phaser.GameObjects.Container);
console.log(container1, container2);
console.log(container1.list[0], container2.list[0]);
}
如果你想运行这段代码,请到Phaser3 SandBox,复制并粘贴上面的代码,然后点击运行代码(对不起,我不知道如何在那里保存我的代码)。任何帮助将不胜感激!
解决方案
在 Phaser 论坛上复制@rexrainbow 的答案:
新的游戏对象不会被添加到显示列表或更新列表中,调用此方法将这个容器添加到显示列表。
this.add.existing(container2);
推荐阅读
- .net - Xunit 未在 Visual Studio 2019 中运行某些测试
- maven - [Intellij][Maven] 如何使用项目作为对另一个项目的依赖
- robotframework - 使用Robot框架评估后如何使用0获取月份格式
- sql - PostgreSQL,插入前检查重复
- python - 使用 Python 构建 RPC 服务集群
- python - 无法从列表中添加 networkx 节点和链接
- reactjs - 如何使用反应钩子在 setInterval 中获取更新的道具?
- ruby-on-rails - 由于 Chrome,我被迫重新启动 Rails Server 以更新控制器中的修改
- javascript - jQuery on button click, 在同一页面上重定向但到不同的部分/面板
- reactjs - 更新状态后,使用set,状态仍然有空数组