好奇为什么我的带捕鼠器的Createjs变慢了。 (提供了jsfiddle)

问题描述 投票:1回答:1

我正在使用新的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键事件来移动我的角色,但是效果是相同的。当我左右移动时,角色滞后很奇怪。

canvas dom-events createjs easeljs mousetrap
1个回答
2
投票

如果您指的是scaleX=-1/1与x轴运动之间的延迟:这与CreateJS(或任何其他JS框架)无关,这是浏览器分派keydown事件的方式。

例如,尝试在文本输入中按下键,您会注意到,首先按下的字符会立即显示,但是只有在几毫秒的延迟之后,按下的键才会导致出现其他字符。这是为了防止系统在仅用于键入一个字符的情况下意外键入一个字符。


解决方案:要解决此问题,只需在某个键为keydown时设置一个标志,然后在keyup上取消设置该标志。例如,您可以使用全局对象pressedKeys,每当按下a时,都要设置pressedKeys.a = true;onkeyUp -> pressedKeys.a = false;,然后在handleTick中检查ad是否设置为true并如果是,请调用相应的方法moveRight/moveLeft

© www.soinside.com 2019 - 2024. All rights reserved.