Se connecter

Informatique

Programmation

Sujet : Javascript prototype
1
infiltrator
Niveau 5
27 août 2016 à 11:58:18

Salut à tous !
Je suis en train de faire un jeux en Javascript à l'aide de Phaser, j'ai fait une classe Player avec deux méthodes move et update :

var Player = function(game, x, y, textureName){
    Phaser.Sprite.call(this, game, x, y, textureName);
    game.add.existing(this);
};
//l'Objet 
Player.prototype = Object.create(Phaser.Sprite.prototype);
//on affecte à l'objet son constructeur 
Player.prototype.constructor = Player;

Player.prototype.update = function(cursors){
    this.move(cursors);
};
    
Player.prototype.move = function(cursors){
    if(cursors.right.isDown){
        this.body.velocity.x += 150;
    }
    else if(cursors.left.isDown){
        this.body.velocity.x -= 150;
    }
};
ludum.Game = function(game){
    var text;
    var style;
    var hero;
    var cursors;
    var levelParams;
};

ludum.Game.prototype = {
	create: function(){
	    this.style = { font: 'bold 25pt Arial', fill: 'white', align: 'left', wordWrap: true, wordWrapWidth: 450 };
	    this.text = this.add.text(0, 0, "Game state", this.style);
	    this.physics.startSystem(Phaser.Physics.ARCADE);
	    //le hero
		this.hero = new Player(this,50,50,'hero');
		
	    this.physics.arcade.gravity.y = 250;
		this.physics.enable(this.hero, Phaser.Physics.ARCADE);
		this.cursors = this.input.keyboard.createCursorKeys();
		//this.camera.follow(this.hero);
	},
	
	update: function(){
	    this.hero.update(this.cursors);
	}
};

Le problème est le suivant lorsque que je lance le jeux il me dit que cursors n'est pas definie alors qu'il est ...
Je pense que c'est un problème avec le paramètre cursors dans update et move, mais en vrai je suis perdu, logiquement ( dans la tête ) ça devrait marcher, Javascript j'ai vraiment du mal ... Merci du votre en tout cas !

Elmohe
Niveau 9
29 août 2016 à 13:10:35

J'y connais absolument rien au JS, mais si c'est un minimum comme les autres langages, "var cursors;" ligne 5 du 2ème code, la variable est déclarée localement et provisoirement pour la fonction seulement au lieu de publiquement :ok:

infiltrator
Niveau 5
29 août 2016 à 17:38:12

oui le problème était là, mais étant habitué au public/protected/private de java, je ne connaissais pas réellement le sens de var, mais j'ai finis par le comprendre ^^Merci en tout cas !

LGV
Niveau 22
29 août 2016 à 18:25:12

Si tu viens d'un background Java, regarde du cote de TypeScript ; c'est du javascript avec la structure de langages modernes (classes, methodes, encapsulation, etc.) et il y a des bindings dispos pour Phaser (et je confirme que ca marche tres, m'en servant moi-meme depuis plusieurs mois)

1
Sujet : Javascript prototype
News culture
La Planète des Singes : Le Nouveau Royaume - la révolution simienne est en marche !
   Retour haut de page
Consulter la version web de cette page