如何在到达帧末尾时将其位置重置回原点?
How to reset its position back to the origin when it reach the end of frame?
这是移相器示例之一,我试图做的是在图像到达帧末尾时再次加载图像。有人可以解释一下怎么做吗
var game = new Phaser.Game(1500, 200, Phaser.AUTO, 'phaser-example', { preload: preload, create: create });
function preload() {
// You can fill the preloader with as many assets as your game requires
// Here we are loading an image. The first parameter is the unique
// string by which we'll identify the image later in our code.
// The second parameter is the URL of the image (relative)
game.load.image('Car', 'car.jpg');
}
function create() {
// This creates a simple sprite that is using our loaded image and
// displays it on-screen
// and assign it to a variable
var image = game.add.sprite(0, 0, 'Car');
game.physics.enable(image, Phaser.Physics.ARCADE);
image.body.velocity.x=750;
if (image>game.width)
{
game.load.image('Car', 'car.jpg');
var image = game.add.sprite(0, 0, 'Car');
}
}
我假设上面只是伪代码,因为有很多小错误。但是这种方法存在很多问题。
如果你事先知道新图像需要是什么,那么预先加载它,然后使用 loadTexture 来应用它:
function preload() {
game.load.image('Car', 'car.jpg');
game.load.image('Pumpkin', 'pumpkin.png');
}
...
function update() {
if (car.x > game.width) {
car.loadTexture('Pumpkin');
}
}
还有一些其他需要注意的事项:
1) 仅在尚未设置纹理时更改纹理(在上面的示例中,它将 运行 一遍又一遍地加载纹理,除非您重置 car.x 坐标)
2) 如果您无法预先加载图像,则可以在播放过程中加载它。查看 "Loader Events" 示例代码了解详细信息。
3) 您需要检查精灵在 update
中的位置而不是 create
(因为到那时它根本不会移动)。
这是移相器示例之一,我试图做的是在图像到达帧末尾时再次加载图像。有人可以解释一下怎么做吗
var game = new Phaser.Game(1500, 200, Phaser.AUTO, 'phaser-example', { preload: preload, create: create });
function preload() {
// You can fill the preloader with as many assets as your game requires
// Here we are loading an image. The first parameter is the unique
// string by which we'll identify the image later in our code.
// The second parameter is the URL of the image (relative)
game.load.image('Car', 'car.jpg');
}
function create() {
// This creates a simple sprite that is using our loaded image and
// displays it on-screen
// and assign it to a variable
var image = game.add.sprite(0, 0, 'Car');
game.physics.enable(image, Phaser.Physics.ARCADE);
image.body.velocity.x=750;
if (image>game.width)
{
game.load.image('Car', 'car.jpg');
var image = game.add.sprite(0, 0, 'Car');
}
}
我假设上面只是伪代码,因为有很多小错误。但是这种方法存在很多问题。
如果你事先知道新图像需要是什么,那么预先加载它,然后使用 loadTexture 来应用它:
function preload() {
game.load.image('Car', 'car.jpg');
game.load.image('Pumpkin', 'pumpkin.png');
}
...
function update() {
if (car.x > game.width) {
car.loadTexture('Pumpkin');
}
}
还有一些其他需要注意的事项:
1) 仅在尚未设置纹理时更改纹理(在上面的示例中,它将 运行 一遍又一遍地加载纹理,除非您重置 car.x 坐标)
2) 如果您无法预先加载图像,则可以在播放过程中加载它。查看 "Loader Events" 示例代码了解详细信息。
3) 您需要检查精灵在 update
中的位置而不是 create
(因为到那时它根本不会移动)。