suigetsu
@suigetsu
ぬるぽちゃん

Почему (Phaser 2) game.time.event.loop не срабатывает и игра зависает?

Сегодня познакомилась с Phaser 2 и Javascript (то есть знания минимальные). И решила сделать Flappy Bird. В игре есть таймер, он зависает после первого тика
this.timer = this.game.time.events.loop(2488, addPipe(), this);

Не могу понять в чем дело. Заранее спасибо всем, кто ответит (´。• ω •。`).
Полный код:
var game = new Phaser.Game(400, 640);
    var sprite;
    var jumpButton;
    var spriteBird;
    var pipe1;
    var pipe2;
    var score;
    var total = 0;
    var nyanNeko = function(game){}
    nyanNeko.prototype = {
        preload: function() { 
            game.load.image('block1', 'assets/block1.png')
            game.load.image('block2', 'assets/block2.png');
            game.load.image('block1_1', 'assets/block1_1.png');//これわスプライト
            game.load.image('block1_2', 'assets/block1_2.png');
            game.load.image('block3', 'assets/block3.png');
            game.load.image('background', 'assets/back.png');
            game.load.image('bird', 'assets/nyan.png');
        },
        create: function() { 
            game.physics.startSystem(Phaser.Physics.ARCADE);
            sprite = game.add.tileSprite(0, 0, 480, 640, 'background');
            score = game.add.text(10,10,"SCORE -");
            spriteBird =game.add.sprite(20,320,'bird');
            spriteBird.width = 77;
            spriteBird.height = 70;
            game.physics.arcade.enable(spriteBird);
            spriteBird.body.gravity.y = 999;  
            jumpButton = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
            jumpButton.onDown.add(jump, this); 
            this.timer = this.game.time.events.loop(2488, addPipe(), this);  
            
        },
        update: function() {
            game.physics.arcade.overlap(spriteBird,pipe1, this.restart, null, this);
            game.physics.arcade.overlap(spriteBird,pipe2, this.restart, null, this);
            if( spriteBird.y > game.height) 
                restart();
        },
        restart: function() {
             this.game.time.events.remove(this.timer); 
            game.state.start('main');
      }
    };
    function addPipe(){
            var npipe;
            var npipe2;
            npipe = game.add.sprite(400,0,'block1_1');
            npipe2 = game.add.sprite(400,450,'block1_2');
            game.physics.arcade.enable(npipe);
            npipe.body.velocity.x = -200; 
            npipe.checkWorldBounds = true;
            npipe.outOfBoundsKill = true;
            game.physics.arcade.enable(npipe2);
            npipe2.body.velocity.x = -200; 
            npipe2.checkWorldBounds = true;
            npipe2.outOfBoundsKill = true;
            pipe1=npipe;
            pipe2=npipe2;
            total++;
    }
   
    function randomInt (min, max) {
            var rand = min + Math.random() * (max + 1 - min);
            rand = Math.floor(rand);
            return rand;
    }
    function jump() {
        spriteBird.body.velocity.y = -350;
    }
    game.state.add('main', nyanNeko); 
    game.state.start('main');
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы