我有一个通过左右箭头键在 x 轴上动画的精灵。它设置为在“keydown”上移动并在“keyup”上停止。问题是,它仅在第二次按键后才动画。我也试过按住左键或右键——在'keyup'时精灵仍然有动画。同样,这会在第二次按下“相同”键后取消。
我的活动从第 54 行开始。
我已经设置了一个控制台日志,因此在查看事件的同时打开控制台可能更容易理解。
哦,是的,我正在使用 EaselJS 库和 Mousetrap 键盘快捷键库;不确定这会有所不同,因为我的问题本质上与浏览器有关。对我现有代码的任何解决方法或帮助都会很棒。
function move() {
if (rightHeld) { // move right
var speed = 3;
chuck.x += speed;
chuck.scaleX = 1;
} // end move right
if (rightHeld && keyDown == false) { // animate move right
chuck.gotoAndStop('idle');
chuck.gotoAndPlay('walk');
keyDown = true;
} // end animate move right
if (leftHeld) { // move left
var speed = 3;
chuck.x -= speed;
chuck.scaleX =- 1;
} // end move left
if (leftHeld && keyDown == false) { // animate move left
chuck.gotoAndStop('idle');
chuck.gotoAndPlay('walk');
keyDown = true;
} // end animate move left
} // end function move
/* KEYDOWN*/
function handleKeyDown(event) {
Mousetrap.bind('right', function () {
rightHeld = true;
console.log('keydown right');
}, 'keydown'); // end 'right'
Mousetrap.bind('left', function () {
leftHeld = true;
console.log('keydown left');
}, 'keydown'); // end 'left'
} // end function handleKeyDown
/* KEY UP */
function handleKeyUp() {
Mousetrap.bind('right', function () {
chuck.gotoAndStop('walk');
chuck.gotoAndPlay('idle');
rightHeld = false;
keyDown = false;
console.log('keyup right');
}, 'keyup'); // end 'right'
Mousetrap.bind('left', function () {
chuck.gotoAndStop('walk');
chuck.gotoAndPlay('idle');
leftHeld = false;
keyDown = false;
console.log('keyup left');
}, 'keyup'); // end 'left'
} // end function handleKeyUp
感谢聪明人!