在移相器中移动背景

时间:2015-02-27 15:33:36

标签: html5 phaser-framework

我正在尝试按下左键时移动背景,我正在使用移相器,这里是代码:

<!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>

当我运行它没有任何事情发生在后台,我不知道问题在哪里

2 个答案:

答案 0 :(得分:2)

很高兴您已经找到了答案,但只是添加以下内容:

cursors = game.input.keyboard.createCursorKeys();

应该在更新功能中。它应该只在 create 中设置一次。

答案 1 :(得分:1)

您的代码至少有 3个错误

  1. 您没有名为“sky”的变种

    所以,使用

    sky = game.add.sprite(0, 0, 'sky');

    而不是

    game.add.sprite(0, 0, 'sky');

  2. 创建游标应该在create function中,而不是更新函数。

    cursors = game.input.keyboard.createCursorKeys();

  3. 你应该手动为sprite启用物理。默认情况下,sprite没有物理。

    game.physics.enable(sky, Phaser.Physics.ARCADE);

  4. 可运行的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;
        }
    }