我正在尝试按下左键时移动背景,我正在使用移相器,这里是代码:
<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<title>hello phaser!</title>
<script src="phaser.min.js"></script>
</head>
<body>
<script type="text/javascript">
window.onload = function() {
var game = new Phaser.Game(800, 600, Phaser.AUTO, '', {
preload : preload,
create : create,
update : update
});
var score = 0;
var scoreText;
function preload() {
game.load.image('sky', 'sky.png');
}
function create() {
game.physics.startSystem(Phaser.Physics.ARCADE);
game.add.sprite(0, 0, 'sky');
}
function update() {
cursors = game.input.keyboard.createCursorKeys();
if (cursors.left.isDown) {
sky.body.velocity.x = -150;
}
}
};
</script>
</body>
</html>
当我运行它没有任何事情发生在后台,我不知道问题在哪里
答案 0 :(得分:2)
很高兴您已经找到了答案,但只是添加以下内容:
cursors = game.input.keyboard.createCursorKeys();
不应该在更新功能中。它应该只在 create 中设置一次。
答案 1 :(得分:1)
您的代码至少有 3个错误。
您没有名为“sky”的变种
所以,使用
sky = game.add.sprite(0, 0, 'sky');
而不是
game.add.sprite(0, 0, 'sky');
创建游标应该在create function中,而不是更新函数。
cursors = game.input.keyboard.createCursorKeys();
你应该手动为sprite启用物理。默认情况下,sprite没有物理。
game.physics.enable(sky, Phaser.Physics.ARCADE);
可运行的js代码喜欢这个:
var game = new Phaser.Game(800, 600, Phaser.AUTO, '', {
preload : preload,
create : create,
update : update
});
var sky;
var cursors;
function preload() {
game.load.image('sky', 'sky.png');
}
function create() {
game.physics.startSystem(Phaser.Physics.ARCADE);
sky = game.add.sprite(0, 0, 'sky');
game.physics.enable(sky, Phaser.Physics.ARCADE);
cursors = game.input.keyboard.createCursorKeys();
}
function update() {
if (cursors.left.isDown) {
sky.body.velocity.x = -150;
} else {
sky.body.velocity.x = 0;
}
}