2014-03-28 41 views
1

所以我正在使用新的createjs,並且他們刪除了翻頁和addflipframes。顯然scaleX = -1是假設速度更快,但現在當我想要左右移動我的角色時,現在我有一個奇怪的滯後。我只是希望我已經編碼了我的移動功能錯誤,或者如果它的只是mousetrap.js不友好與create.js想知道爲什麼我的Createjs with Mousetrap運行緩慢。 (jsfiddle提供)

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鍵盤事件來移動我的角色,但效果是一樣的。當我左右移動時,角色會如何滯後,這很奇怪。

回答

2

如果您指的是scaleX=-1/1與x運動之間的延遲: 這與CreateJS(或任何其他JS框架)無關,這是瀏覽器分派keydown事件的方式。

例如按下文本輸入中的按鍵,您會注意到,首先按下的字符將立即顯示,但只有延遲幾毫秒後,按下的按鍵纔會顯示其他字符。這是爲了防止系統在使用時僅意圖鍵入一個字符而多次鍵入字符。


解決方案:爲了解決這個問題,只是設置一個標誌每當某些關鍵是​​和取消對keyup的標誌。例如,你可以使用一個全局對象pressedKeys,每當按下a設置pressedKeys.a = true;onkeyUp -> pressedKeys.a = false;然後在handleTick你是否ad設置爲true如果這樣調用相應的方法moveRight/moveLeft

+0

當我和quintus一起工作時,我記得我必須這樣做,但從來不明白爲什麼,這讓我有很多感,謝謝! – jemiloii

相關問題