2013-05-17 3 views
0

Добрый день. У меня небольшая проблема с оптимизацией KineticJS и stage. При перетаскивании сцены на моем компьютере она работает гладко. Когда попробовать более недорогие машины, он появляется медленно, а некоторые король слайд-шоу. Здесь код инициализации Кинетический:KineticJS Stage перетаскиваемый перфоманс

this.stage = new Kinetic.Stage({ 
    container: WF_Config.gameWindowId, 
    width: $(stageContainerDOM).width(), 
    height: $(stageContainerDOM).height(), 
    draggable: true, 
    //TODO: test on other browsers. I really not understand what it's doing :) 
    dragOnTop: false, 
    scale: { 
     x: 1, 
     y: 1 
    } 
}); 
this.layers = { 
    //Listen for events only for ground cells 
    ground: new Kinetic.Layer(), 
    grid: new Kinetic.Layer({ 
     listening: false 
    }), 
    buildings: new Kinetic.Layer({ 
     listening: false 
    }), 
    tooltip: new Kinetic.Layer({ 
     listening: false 
    }) 
}; 

Как я могу увеличить производительность этого? Здесь test site. Нажмите «Создать игру» и напишите имя и пароль на какую-то строку, а количество игроков - целое. И вы это видите. P.S. Спасибо за помощь и извините за мой плохой английский.

+0

Вы можете поставить фрагмент кода здесь вашей проблемы? Я попробовал открыть вашу игру. Я сдался после ожидания 1 минуты на экране «пожалуйста, подождите». BTW, canvas работает намного медленнее на мобильных устройствах, поэтому ваше желание оптимизировать - хорошая идея. – markE

+0

Я заметил проблему jQuery 2.0 с Opera. Я тоже не могу открыть игру в Opera. В других браузерах это прекрасно работает. В этом проблема, я не знаю, какую часть кода можно оптимизировать. Я просто устанавливаю draggable в Kinetic.Stage и все такое. И вопрос «Как оптимизировать это свойство перетаскивания по умолчанию?». Благодарю. P.S. Здесь [Scene.js] (https://github.com/ghaiklor/waroffuture/blob/master/js/Scene.js), которые реализуют весь рисунок в игре. – ghaiklor

+0

Одна вещь: масштабирование на холсте - это утечка производительности. Можете ли вы избежать масштабирования? – markE

ответ

0

посмотреть на кеширование. Вы можете кэшировать всю сцену прямо перед перетаскиванием. Это временно преобразует всю сцену в изображение. Вот тут на кэширование:

http://www.html5canvastutorials.com/kineticjs/html5-canvas-shape-caching-with-kineticjs/

+0

Я попробую. Но если я попытаюсь преобразовать фигуры в изображение перед перетаскиванием, а затем снова нарисую фигуры без кеширования ... Это будет очень медленно, я думаю. – ghaiklor

+0

Я понимаю, кеширование, и он отлично работает для меня. Но как я сейчас обнаружу клетки? – ghaiklor