KeyboardPlugin

.Input.Keyboard. KeyboardPlugin

键盘插件是一个属于场景输入系统的输入插件. 它的作用是监听本机DOM键盘事件,然后处理它们. 您不需要直接创建这个类,输入系统将自动创建它的一个实例. 您可以使用`输入键盘`从场景中访问它.例如,您可以: ```javascript this.input.keyboard.on('keydown', callback, context); ``` 或者,要监听特定的按键: ```javascript this.input.keyboard.on('keydown-A', callback, context); ``` 您还可以创建关键对象,然后在游戏循环中进行轮询: ```javascript var spaceBar = this.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.SPACE); ``` 如果您有多个并行场景,每个场景都试图获得键盘输入,请确保禁用对它们的捕捉以阻止它们 从列表中的另一个场景窃取输入.您可以使用 场景停止所有输入,或 `this.input.keyboard.preventdefault = false` 停止一个场景停止另一个场景的输入. _注意_:由于被称为重影的硬件限制,许多键盘无法处理某些组合键. See http://www.html5gamedevs.com/topic/4876-impossible-to-use-more-than-2-keyboard-input-buttons-at-the-same-time/ 更多详情. 另外,请注意,某些浏览器扩展可以禁用或覆盖Phaser键盘处理. 例如,众所周知,Chrome扩展vimium禁止Phaser使用D键,而EverNote禁止backtick键. 还有其他的.因此,在打开Phaser之前,请检查您的扩展,关于不工作的键的问题.

Constructor

new KeyboardPlugin(sceneInputPlugin)

Since:
  • 3.10.0
Parameters:
Name Type Description
sceneInputPlugin Phaser.Input.InputPlugin 键盘插件所属的场景输入插件的引用.

Extends

Members

combos :Array.<Phaser.Input.Keyboard.KeyCombo>

Since:
  • 3.10.0
要处理的KeyCombo对象的数组.
Type:

enabled :boolean

Since:
  • 3.10.0
Default Value:
  • true
一个布尔值,它控制此键盘插件是否启用. 可以随时切换.
Type:
  • boolean

game :Phaser.Game

Since:
  • 3.16.0
核心游戏的参考,这样我们就可以监听可见性事件.
Type:

keys :Array.<Phaser.Input.Keyboard.Key>

Since:
  • 3.10.0
要处理的关键对象的数组.
Type:

manager :Phaser.Input.Keyboard.KeyboardManager

Since:
  • 3.16.0
对全局键盘管理器的引用.
Type:

scene :Phaser.Scene

Since:
  • 3.10.0
这个输入插件负责的场景的引用.
Type:

sceneInputPlugin :Phaser.Input.InputPlugin

Since:
  • 3.10.0
创建这个键盘插件的场景输入插件的参考.
Type:

settings :Phaser.Types.Scenes.SettingsObject

Since:
  • 3.10.0
场景系统设置的参考.
Type:

Methods

addCapture(keycode) → {this}

Since:
  • 3.16.0
默认情况下,当按下一个键时,Phaser不会阻止事件向上传播到浏览器. 有些键可能很烦人,比如箭头键或空格键,它们会使浏览器窗口滚动. 这种`addCapture`的方法能够为特定的键使用键盘事件,所以它们不会在浏览器中冒泡 并导致默认行为. 请注意,键盘捕获是全局的.这意味着如果您在场景中调用此方法,比如说防止 空格键触发页面滚动,然后它会阻止你游戏中的任何场景,而不仅仅是调用的场景. 您可以传递单个键码值: ```javascript this.input.keyboard.addCapture(62); ``` 一组关键代码: ```javascript this.input.keyboard.addCapture([ 62, 63, 64 ]); ``` 或者,逗号分隔的字符串: ```javascript this.input.keyboard.addCapture('W,S,A,D'); ``` 要使用非字母数字键,请使用一个字符串,如 `UP` , `SPA` 或 `Z` . 您还可以提供一个混合字符串和键码整数的数组.
Parameters:
Name Type Description
keycode string | number | Array.<number> | Array.<any> 启用事件捕获的关键代码.
Returns:
这个键盘插件对象.
Type
this

addKey(key, enableCaptureopt, emitOnRepeatopt) → {Phaser.Input.Keyboard.Key}

Since:
  • 3.10.0
向此键盘插件添加一个键对象. 给定的参数可以是现有的Key对象,字符串(如 `A` 或 `SPACE` )或键码值. 如果给定了一个密钥对象,并且已经存在一个匹配相同密钥代码的密钥对象,则用新的密钥对象替换现有的密钥对象.
Parameters:
Name Type Attributes Default Description
key Phaser.Input.Keyboard.Key | string | number 密钥对象,字符串(如 `A` 或 `SPACE` )或密钥代码值.
enableCapture boolean <optional>
true 对于正在添加的关键代码,在本机DOM浏览器事件上自动调用 `preventDefault` .
emitOnRepeat boolean <optional>
false 控制按住键时是连续发出`down`事件(真),还是只发出一次事件(假,默认).
Returns:
新创建的键对象,或者对它的引用(如果它已经存在于键数组中).
Type
Phaser.Input.Keyboard.Key

addKeys(keys, enableCaptureopt, emitOnRepeatopt) → {object}

Since:
  • 3.10.0
创建包含用户选择的热键的对象的实用方法. 例如: ```javascript this.input.keyboard.addKeys({ 'up': Phaser.Input.Keyboard.KeyCodes.W, 'down': Phaser.Input.Keyboard.KeyCodes.S }); ``` 将返回一个包含映射到W和S Phaser.Input.Keyboard.Key的属性( `up` 和 `down` )的对象.输入. Keyboard.Key}对象. 您也可以传入逗号分隔的字符串: ```javascript this.input.keyboard.addKeys('W,S,A,D'); ``` 它将返回一个对象,该对象具有映射到相关键对象的属性. 要使用非字母数字键,请使用一个字符串,如 `UP` , `SPA` 或 `Z` .
Parameters:
Name Type Attributes Default Description
keys object | string 包含密钥代码或逗号分隔字符串的对象.
enableCapture boolean <optional>
true 对于正在添加的关键代码,在本机DOM浏览器事件上自动调用 `preventDefault` .
emitOnRepeat boolean <optional>
false 控制按住键时是连续发出`down`事件(真),还是只发出一次事件(假,默认).
Returns:
包含映射到输入属性的关键对象的对象.
Type
object

addListener(event, fn, contextopt) → {this}

Since:
  • 3.0.0
Inherited From:
为给定事件添加侦听器.
Parameters:
Name Type Attributes Default Description
event string | symbol 事件名称.
fn function 侦听器函数.
context * <optional>
this 用来调用侦听器的上下文.
Returns:
`this`.
Type
this

checkDown(key, durationopt) → {boolean}

Since:
  • 3.11.0
检查给定的键对象当前是否被按住. 这种方法与直接检查 `Key.isDown` 属性的区别在于,您可以提供 此方法的持续时间.例如,如果你想按一个键来发射一颗子弹,但你只想 它必须能够每100毫秒触发一次,然后你可以调用这个方法, `duration` 为100,它 只会每100毫秒返回一次 `true` . 如果键盘插件已被禁用,此方法将始终返回 `false` .
Parameters:
Name Type Attributes Default Description
key Phaser.Input.Keyboard.Key 一个关键对象.
duration number <optional>
0 在该键被视为关闭之前必须经过的持续时间.
Returns:
如果在指定的持续时间内按键按下,则为 `true` ,否则为 `false` .
Type
boolean

clearCaptures() → {this}

Since:
  • 3.16.0
移除所有键盘捕获. 注意,这是一个全球性的变化.它将清除整个游戏中的所有事件捕获,而不仅仅是这个特定场景.
Returns:
这个键盘插件对象.
Type
this

createCombo(keys, configopt) → {Phaser.Input.Keyboard.KeyCombo}

Since:
  • 3.10.0
创建一个新的键帽. 键帽会从键盘上监听特定的一串键,当它收到这些键时 它将从这个键盘插件发出一个 `keycombomatch` 事件. 要监听的按键可以定义为: 字符串(即. `ATARI` ) 整数(键码)或字符串的数组,或者两者的混合 具有公共`keyCode`属性的对象数组(如关键字对象) 例如,要收听Konami代码(上,上,下,下,左,右,左,右,b,a,回车) 您可以传递以下一组密钥代码: ```javascript this.input.keyboard.createCombo([ 38, 38, 40, 40, 37, 39, 37, 39, 66, 65, 13 ], { resetOnMatch: true }); this.input.keyboard.on('keycombomatch', function (event) { console.log('Konami Code entered!'); }); ``` 或者,倾听用户输入单词Phaser: ```javascript this.input.keyboard.createCombo('PHASER'); ```
Parameters:
Name Type Attributes Description
keys string | Array.<number> | Array.<object> 组成该组合的键.
config Phaser.Types.Input.Keyboard.KeyComboConfig <optional>
按键组合配置对象.
Returns:
新的键帽对象.
Type
Phaser.Input.Keyboard.KeyCombo

createCursorKeys() → {Phaser.Types.Input.Keyboard.CursorKeys}

Since:
  • 3.10.0
创建并返回一个对象,该对象包含4个热键:向上,向下,向左和向右,以及空格键和shift.
Returns:
包含以下属性的对象: `up` , `down` , `left` , `right` , `space` 和 `shift` .
Type
Phaser.Types.Input.Keyboard.CursorKeys

disableGlobalCapture() → {this}

Since:
  • 3.16.0
禁止相位器阻止任何你可能已经定义的关键捕捉,而不实际删除它们. 例如,如果您交换到一个DOM元素,您可以使用它来暂时禁用事件捕获.
Returns:
这个键盘插件对象.
Type
this

emit(event, …argsopt) → {boolean}

Since:
  • 3.0.0
Inherited From:
调用为给定事件注册的每个侦听器.
Parameters:
Name Type Attributes Description
event string | symbol 事件名称.
args * <optional>
<repeatable>
将传递给事件处理程序的附加参数.
Returns:
`true` 如果事件有侦听器,则为 `false` .
Type
boolean

enableGlobalCapture() → {this}

Since:
  • 3.16.0
允许Phaser阻止您可能已经定义的任何键捕获在浏览器中冒泡. 如果您通过 `disableGlobalCapture` 暂停了事件捕获,您可以使用它来重新启用事件捕获.
Returns:
这个键盘插件对象.
Type
this

eventNames() → {Array.<(string|symbol)>}

Since:
  • 3.0.0
Inherited From:
返回一个数组,列出发射器已注册侦听器的事件.
Returns:
Type
Array.<(string|symbol)>

getCaptures() → {Array.<number>}

Since:
  • 3.16.0
返回包含当前启用的所有键盘捕获的数组.
Returns:
当前捕获的所有键码的数组.
Type
Array.<number>

isActive() → {boolean}

Since:
  • 3.10.0
检查该插件及其所属的场景是否处于活动状态.
Returns:
`true` 如果插件和它所属的场景是活动的.
Type
boolean

listenerCount(event) → {number}

Since:
  • 3.0.0
Inherited From:
返回监听给定事件的侦听器数量.
Parameters:
Name Type Description
event string | symbol 事件名称.
Returns:
侦听器的数量.
Type
number

listeners(event) → {Array.<function()>}

Since:
  • 3.0.0
Inherited From:
返回为给定事件注册的侦听器.
Parameters:
Name Type Description
event string | symbol 事件名称.
Returns:
注册的听众.
Type
Array.<function()>

off(event, fnopt, contextopt, onceopt) → {this}

Since:
  • 3.0.0
Inherited From:
移除给定事件的侦听器.
Parameters:
Name Type Attributes Description
event string | symbol 事件名称.
fn function <optional>
仅移除与此函数匹配的侦听器.
context * <optional>
仅移除具有此上下文的侦听器.
once boolean <optional>
仅删除一次性侦听器.
Returns:
`this`.
Type
this

on(event, fn, contextopt) → {this}

Since:
  • 3.0.0
Inherited From:
为给定事件添加侦听器.
Parameters:
Name Type Attributes Default Description
event string | symbol 事件名称.
fn function 侦听器函数.
context * <optional>
this 用来调用侦听器的上下文.