有"this.add.rectangle()"、"new Phaser.GameObjects.Rectangle()"和"fillRectShape()"3种方法,什么时候该用哪个?
There are 3 method "this.add.rectangle()", "new Phaser.GameObjects.Rectangle()" and "fillRectShape()", when should I use which?
我是 Phaser 3 的新手,正在尝试找出(至少)3 种创建矩形的方法之间的区别。这是代码
var game = new Phaser.Game({
scene: {
create: create
}
});
function create() {
let rect1 = this.add.rectangle(300, 100, 100, 30, 0x00f000, .5);
let rect2 = new Phaser.GameObjects.Rectangle(this, 300, 150, 100, 30, 0xf00000)
this.add.existing(rect2);
let rect3 = this.add.graphics({
fillStyle: {
color: 0x00f0f0
}
});
let rect = new Phaser.Geom.Rectangle(300, 200, 100, 30);
rect3.fillRectShape(rect);
}
<script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>
rect1
使用最简单的,只需要1行代码。
rect2
实例化 Phaser.GameObjects.Rectangle
class。我想如果我需要一堆类似矩形的对象,它会更强大,我可以在其中创建 class 的子 class,预定义一些属性和方法并实例化我自定义的类似矩形的对象。
rect3
使用 Phaser.GameObjects.Graphics
我无法想象它击败前两个的用例。有人可以给我提示吗?
简答:
- 如果您需要矩形用于边界或其他计算,请使用:
new Phaser.Geom.Rectangle(...)
- 如果你需要一个简单的矩形 GameObject 使用:
this.add.rectangle(...)
- 如果您不想立即将其添加到场景中,请使用:
new Phaser.GameObjects.Rectangle(...)
- 如果你需要特殊矩形 GameObject更多花里胡哨使用:
this.add.graphics(...)
长答案:
这取决于手头的任务。由于每个对象或多或少地创建了一个具有不同 properties/methods.
的不同对象
- 输入
Phaser.GameObjects.Graphics
:
是一个 GameObject 但非常“lowlevel”,你几乎可以在上面绘制任何东西。像矩形,圆圈,...但它更多的工作。
可以在这里找到详细信息https://photonstorm.github.io/phaser3-docs/Phaser.GameObjects.Graphics.html
Here an example of a special rectangle: https://phaser.io/examples/v3/view/game-objects/graphics/fill-rounded-rectangle
- 输入
Phaser.GameObjects.Rectangle
:
是 GameObject 作为 Phaser.GameObjects.Graphics
,但专用于创建矩形。
this.add.rectangle(...)
和 new Phaser.GameObjects.Rectangle(...)
都创建了这种类型的矩形。 this.add.rectangle
只是一种更方便的实现方式,直接将其添加到当前场景中。
可在此处找到详细信息https://photonstorm.github.io/phaser3-docs/Phaser.GameObjects.Rectangle.html)
Here an example of basic rectangles: https://phaser.io/examples/v3/view/game-objects/shapes/rectangle
- 输入
Phaser.Geom.Rectangle
:
是一个几何形状Shape,适合边界and/or其他计算(但你也可以用它画画).
可以在这里找到详细信息https://photonstorm.github.io/phaser3-docs/Phaser.Geom.Rectangle.html
Here an example of how it is used to check if an GameObject is in a specific rectangle: https://phaser.io/examples/v3/view/geom/rectangle/contains-rect
我是 Phaser 3 的新手,正在尝试找出(至少)3 种创建矩形的方法之间的区别。这是代码
var game = new Phaser.Game({
scene: {
create: create
}
});
function create() {
let rect1 = this.add.rectangle(300, 100, 100, 30, 0x00f000, .5);
let rect2 = new Phaser.GameObjects.Rectangle(this, 300, 150, 100, 30, 0xf00000)
this.add.existing(rect2);
let rect3 = this.add.graphics({
fillStyle: {
color: 0x00f0f0
}
});
let rect = new Phaser.Geom.Rectangle(300, 200, 100, 30);
rect3.fillRectShape(rect);
}
<script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>
rect1
使用最简单的,只需要1行代码。
rect2
实例化 Phaser.GameObjects.Rectangle
class。我想如果我需要一堆类似矩形的对象,它会更强大,我可以在其中创建 class 的子 class,预定义一些属性和方法并实例化我自定义的类似矩形的对象。
rect3
使用 Phaser.GameObjects.Graphics
我无法想象它击败前两个的用例。有人可以给我提示吗?
简答:
- 如果您需要矩形用于边界或其他计算,请使用:
new Phaser.Geom.Rectangle(...)
- 如果你需要一个简单的矩形 GameObject 使用:
this.add.rectangle(...)
- 如果您不想立即将其添加到场景中,请使用:
new Phaser.GameObjects.Rectangle(...)
- 如果您不想立即将其添加到场景中,请使用:
- 如果你需要特殊矩形 GameObject更多花里胡哨使用:
this.add.graphics(...)
长答案:
这取决于手头的任务。由于每个对象或多或少地创建了一个具有不同 properties/methods.
的不同对象- 输入
Phaser.GameObjects.Graphics
:
是一个 GameObject 但非常“lowlevel”,你几乎可以在上面绘制任何东西。像矩形,圆圈,...但它更多的工作。
可以在这里找到详细信息https://photonstorm.github.io/phaser3-docs/Phaser.GameObjects.Graphics.html
Here an example of a special rectangle: https://phaser.io/examples/v3/view/game-objects/graphics/fill-rounded-rectangle
- 输入
Phaser.GameObjects.Rectangle
:
是 GameObject 作为Phaser.GameObjects.Graphics
,但专用于创建矩形。
this.add.rectangle(...)
和new Phaser.GameObjects.Rectangle(...)
都创建了这种类型的矩形。this.add.rectangle
只是一种更方便的实现方式,直接将其添加到当前场景中。
可在此处找到详细信息https://photonstorm.github.io/phaser3-docs/Phaser.GameObjects.Rectangle.html)
Here an example of basic rectangles: https://phaser.io/examples/v3/view/game-objects/shapes/rectangle
- 输入
Phaser.Geom.Rectangle
:
是一个几何形状Shape,适合边界and/or其他计算(但你也可以用它画画).
可以在这里找到详细信息https://photonstorm.github.io/phaser3-docs/Phaser.Geom.Rectangle.html
Here an example of how it is used to check if an GameObject is in a specific rectangle: https://phaser.io/examples/v3/view/geom/rectangle/contains-rect