I'm just getting started with Javascript, going on my second day, but I ran into a small issue. I'm using the Phaser API and I'm making use of states, basically my problem is here:
game.input.keyboard.addCallbacks(this, null, null, this.keyPress);
In which I have the following code in the same state
keyPress: function(char) {
console.log("pressed");
if(this.selected == 1) {
this.userFieldText.text += char;
} else if(this.selected == 2) {
this.passFieldText.text += char;
}
}
There's no errors in the console, but the method is never called.
Documentation here
Full class
var loginButton;
var userField;
var userFieldText;
var passField;
var passFieldText;
var selected;
var stateLogin = {
preload: function() {
game.stage.backgroundColor = '#000';
game.load.image('text-field', 'assets/ui/text-box.png');
game.load.image('login-button', 'assets/ui/login-button.png');
},
create: function() {
this.selected = 0;
var userLabel = game.add.text(200, 200, 'Enter a username: ');
userLabel.fontSize = 20;
userLabel.fill='#fff';
var passLabel = game.add.text(200, 250, 'Enter a password: ');
passLabel.fontSize = 20;
passLabel.fill='#fff';
var userField = game.add.sprite(350, 195, 'text-field');
userField.inputEnabled = true;
userField.events.onInputUp.add(function() { this.selectField('user') }, this);
var passField = game.add.sprite(350, 245, 'text-field');
passField.inputEnabled = true;
passField.events.onInputUp.add(function() { this.selectField('pass') }, this);
this.userFieldText = game.add.text(360, 200, '');
this.userFieldText.fontSize = 16;
this.userFieldText.fill = "#fff";
this.passFieldText = game.add.text(360, 250, '');
this.passFieldText.fontSize = 16;
this.passFieldText.fill = "#fff";
game.input.keyboard.addCallbacks(this, null, null, this.keyPress);
},
update: function() {
console.log('Selected: ' + this.selected + ' Text: ' + this.userFieldText.text);
},
selectField: function(field) {
if(field == 'user') {
this.selected = 1;
} else if(field == 'pass') {
this.selected = 2;
}
},
keyPress: function(char) {
console.log("pressed");
if(this.selected == 1) {
this.userFieldText.text += char;
} else if(this.selected == 2) {
this.passFieldText.text += char;
}
}
};