(对不起,如果这是重复的,但我认为不是)
请注意,我使用的是 Google Chrome 29.0.1547.66 m。
我目前正在进行一个KineticJS项目,它构建了一个 40 x 100 瓷砖的平铺“交错”地图。地图渲染大约需要 500 毫秒,这很好。所有4000 块瓷砖都放在了一层上。
完成后,我尝试拖动舞台,但性能很差,因为它试图一次移动所有 4000 个图块。我们谈论的是160 毫秒的 CPU 时间。
我已经尝试按照其他人的建议将每一行分成自己的单独层,但这使它变得更糟(620ms CPU 时间),因为它必须单独移动每一层。
我不会说我非常擅长 JavaScript,但我看不到提高拖动性能的方法,我已经做了一些血统研究。
也许缓存 整个层或其他东西可以工作?
到目前为止,该项目有相当多的代码,所以我只显示片段:
//Stage Object
window.stage = new Kinetic.Stage({
container: element,
width: 800,
height: 600,
draggable: true
});
//Map Loop for create and position tiles
var tempLayer = map.addLayer(); //makes a new layer and adds it to stage etc.
for (var y = 0; y < height; y++) { //100 tiles high
for (var x = width-1; x > -1; x--) { //40 tiles wide
var tileImg = map._tiles[mapArray[x][y]-1]; //map._tiles is just an array of Kinetic.Image objects
if (typeof(tileImg) != "undefined"){
var tileClone = tileImg.clone();
map.place(x, y, 0, tileClone, tempLayer); //places tile in world scope positions
}
}
}
tempLayer.draw();
如果我无法弄清楚如何提高性能,那么任何人都无法运行它,并且该项目将不得不被装箱,因此所有想法都值得赞赏!谢谢!