Phaser 3 示例文本输入无法检测到键入的 Z 键?
Phaser 3 Examples Text Entry cant detect Z key typed?
此代码在键入时无法检测到字母 "Z"。我从 Phaser 3 Examples - Text Entry.
得到的
var config = {
type: Phaser.AUTO,
parent: 'phaser-example',
width: 800,
height: 600,
scene: {
create: create,
update: update
}
};
var keySpace;
var keyBackspace;
var textEntry;
var game = new Phaser.Game(config);
function create ()
{
this.add.text(10, 10, 'Enter your name:', { font: '32px Courier', fill: '#ffffff' });
textEntry = this.add.text(10, 50, '', { font: '32px Courier', fill: '#ffff00' });
// keys = this.input.keyboard.addKeys('A,B,C');
keySpace = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.SPACE);
keyBackspace = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.BACKSPACE);
this.input.keyboard.on('keydown', function (event) {
if (event.keyCode === 8 && textEntry.text.length > 0)
{
textEntry.text = textEntry.text.substr(0, textEntry.text.length - 1);
}
else if (event.keyCode === 32 || (event.keyCode >= 48 && event.keyCode < 90))
{
textEntry.text += event.key;
}
console.log(event);
});
}
function update ()
{
}
我设法添加了这段代码来做一些很好的事情。我正在尝试捕获键入它的键盘并将其注册到自定义 UI 上。如果他或她键入 "Captain Zulu",代码将不起作用,这只会注册 "Captain ulu",因为它没有检测到它。如果他们输入 "Zuzuki" 也会出现 "uuki" 而不是。
else if (event.keyCode === 38 )
{
dosomethingthirtyeight();
showPanel();
}
else if (event.keyCode === 40 )
{
dosomethingfortyeight();
showPanel();
}
这解决了问题。我在这里找到了键码 https://github.com/photonstorm/phaser/blob/v3.20.0/src/input/keyboard/keys/KeyCodes.js#L764
(event.keyCode === 190 || event.keyCode === 90) // the period isnt working too
{
textEntry.text += event.key;
}
此代码在键入时无法检测到字母 "Z"。我从 Phaser 3 Examples - Text Entry.
得到的var config = {
type: Phaser.AUTO,
parent: 'phaser-example',
width: 800,
height: 600,
scene: {
create: create,
update: update
}
};
var keySpace;
var keyBackspace;
var textEntry;
var game = new Phaser.Game(config);
function create ()
{
this.add.text(10, 10, 'Enter your name:', { font: '32px Courier', fill: '#ffffff' });
textEntry = this.add.text(10, 50, '', { font: '32px Courier', fill: '#ffff00' });
// keys = this.input.keyboard.addKeys('A,B,C');
keySpace = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.SPACE);
keyBackspace = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.BACKSPACE);
this.input.keyboard.on('keydown', function (event) {
if (event.keyCode === 8 && textEntry.text.length > 0)
{
textEntry.text = textEntry.text.substr(0, textEntry.text.length - 1);
}
else if (event.keyCode === 32 || (event.keyCode >= 48 && event.keyCode < 90))
{
textEntry.text += event.key;
}
console.log(event);
});
}
function update ()
{
}
我设法添加了这段代码来做一些很好的事情。我正在尝试捕获键入它的键盘并将其注册到自定义 UI 上。如果他或她键入 "Captain Zulu",代码将不起作用,这只会注册 "Captain ulu",因为它没有检测到它。如果他们输入 "Zuzuki" 也会出现 "uuki" 而不是。
else if (event.keyCode === 38 )
{
dosomethingthirtyeight();
showPanel();
}
else if (event.keyCode === 40 )
{
dosomethingfortyeight();
showPanel();
}
这解决了问题。我在这里找到了键码 https://github.com/photonstorm/phaser/blob/v3.20.0/src/input/keyboard/keys/KeyCodes.js#L764
(event.keyCode === 190 || event.keyCode === 90) // the period isnt working too
{
textEntry.text += event.key;
}