Phaser, make a button click event continuous
我正在使用 Phaser.js 创建一个地图(tileSprite)并在上面放置一些sprite,因为不是所有的sprite都可以进入,我正在使用相机左右平移。
我希望用户单击键盘键(左或右)或方向按钮sprite来连续平移相机直到用户释放控件。
我已经实现了与此示例类似的键盘平移,我按住一个键,相机移动/平移(在事件的每一侧各 10 个像素)并在按键释放时停止。
但是,当我尝试使用 2 个sprite按钮实现相同的功能时,每个按钮仅触发 1 个事件,并且每次点击仅平移相机 10 个像素。我需要一直开火,直到我放开钥匙。
1 2 3 4 5 6 7 8 | var panRightButton = game.add.button(800, 5, 'right_pan_btn', onClickAction, this); panRightButton.onInputOver.add(onButtonOver, this); panRightButton.onInputOut.add(onButtonOut, this); panRightButton.onInputDown.add(panScreenRight, this); function panScreenRight() { game.camera.x += 10; } |
我尝试过使用布尔标志 (
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function onClickAction() { isPanning = true; } function onButtonOut() { isPanning = false; } function onButtonUp() { isPanning = false; } function panScreenLeft() { if (isPanning) { game.camera.x -= 10; } } |
正确的方法是在
1 2 3 4 5 6 7 8 9 10 11 12 | function update() { //... if (isPanningLeft) { game.camera.x -= 10; } else if (isPanningRight) { game.camera.x += 10; } //... } |
您不需要循环,因为