所以我正在使用新的createjs,他们已经删除了flip和addflipframes。显然scaleX = -1比较快,但是当我想要左右移动我的角色时,现在我得到了一个奇怪的延迟。我只是希望我已经将我的运动函数编码错误,或者如果它只是mousetrap.js与create.js不友好
http://jsfiddle.net/w5uZF/8/这是测试游戏的jsFiddle。我正在学习如何使用新系统。
这是我的捕鼠器绑定
Mousetrap.bind('a', function(){moveLeft();}, 'keydown');
Mousetrap.bind('d', function(){moveRight();}, 'keydown');
这些是我的运动功能
function moveRight(){
var speed = 20;
sayaka.x += speed;
sayaka.scaleX= 1;
}
function moveLeft(){
var speed = 20;
sayaka.x -= speed;
sayaka.scaleX= -1;
}
我想如果我向你们展示我如何制作我的精灵,它有8帧就好了。
var dataSayaka = {
images: ["http://i.imgur.com/rxDkp2Q.png"],
frames: {width:133, height:139, regX: 50, regY:50},
animations: {runRight:[0,1,2,3,4,5,6,7, "runRight"]}
};
var spriteSheetSayaka = new createjs.SpriteSheet(dataSayaka);
var animationSayaka = new createjs.Sprite(spriteSheetSayaka, "runRight");
sayaka = new createjs.Sprite(spriteSheetSayaka, animationSayaka);
我愿意接受任何建议和批评,因为我很想知道如何提高运动表现。
我曾尝试使用原生的javascript密钥事件来移动我的角色,但效果是一样的。当我向左和向右移动时,角色落后是多么奇怪。
答案 0 :(得分:2)
如果您指的是scaleX=-1/1
和x-movement之间的延迟:
这与CreateJS(或任何其他JS框架)无关,这是浏览器调度keydown事件的方式。
尝试例如在文本输入中按一个键,您会注意到,您按下的字符最初会立即出现,但只有在延迟几毫秒后,按下的键才会显示其他字符。这是为了防止系统多次意外地键入一个字符,当使用时只打算输入一个字符。
解决方案:要解决此问题,只需在某个密钥为keydown
时设置一个标记,并在keyup
上取消设置该标记。例如,您可以使用全局对象pressedKeys
,每当按下a
时,您设置pressedKeys.a = true;
和onkeyUp -> pressedKeys.a = false;
,然后在handleTick
中检查是否a
}或d
设置为true
,如果是,则调用相应的方法moveRight/moveLeft
。