【问题标题】:moving background in phaser移动背景在phaser
【发布时间】:2015-04-30 09:06:33
【问题描述】:

我试图在按下左键时移动背景,我正在使用移相器,代码如下:

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

当我运行它时,后台没有任何反应,我不知道问题出在哪里

【问题讨论】:

  • 嘿,你能完成一个 jsfiddle 吗?我从这里开始:jsfiddle.net/g10ws4ad
  • 我把代码写在一个html文件里,没有css,我在游戏文件夹里只有phaser.min.js和图片
  • 我找到了答案here

标签: html phaser-framework


【解决方案1】:

很高兴您已经找到了答案,但只是补充一下这一行:

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

应该update函数中。它应该在 create 中设置一次。

【讨论】:

    【解决方案2】:

    您的代码至少有 3 个错误

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

      所以,使用

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

      而不是

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

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

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

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

      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;
        }
    } 
    

    【讨论】:

      【解决方案3】:

      刚刚试了一下。

      var background;
          function create() {
              background = game.add.tileSprite(0, 0, this.game.width, this.game.height, 'sky');
              background.fixedToCamera = true;
          }
      
      
              function update() {
                  if (cursors.left.isDown) {
                      background.tileposition.x = -150;
                  }
          }
      

      虽然 -150 可能太大了:)

      See here.

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 2018-09-28
        • 2017-04-10
        • 2019-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多