2015-02-27 2 views
0

я пытаюсь переместить фон при нажатии на левую кнопку, я использую фазер и вот код:перемещения фона в фазере

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

Эй вы можете COMPLET в jsfiddle? Я начал здесь: http://jsfiddle.net/g10ws4ad/ – Mat

+0

Я пишу код в html-файле, нет css все, что у меня есть в папке с игрой phaser.min.js, а изображения –

+1

я нашел ответ [здесь] (http://stackoverflow.com/questions/21669312/phaser-js-infinite-side-scrolling-background) –

ответ

2

Рад, что вы нашли ответ уже, но только добавить, что эта линия:

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

должен не в обновление функция. Он должен быть установлен только один раз в create.

1

Ваш код имеет 3 ошибки как минимум.

  1. вы не не вариант под названием "небо"

    так, используйте

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

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

Просто попытался это сейчас.

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.

Смежные вопросы