Я развиваю игру в веб-браузере, и по мере того, как я прогрессирую, я видел много падений FPS во время анимаций, особенно перетаскиваемых в Chrome. Я очень беспокоился о том, чтобы переписать его и что он становится тяжелым, но когда я запускал приложение в Firefox или даже в IE11, он работал настолько плавно, насколько это возможно, без каких-либо заметных задержек!
Я не могу поверить, что Chrome не будет обрабатывать этот тип рендеринга, возможно ли, что я превратил что-то в консоль, что делает хром лаги, как ад? Некоторые регистрации и т.д.?
Приложение использует тихий много непрозрачности, текстовые и полевые тени и т.д. И т.д.
благодаря
Лиса
- ОБНОВЛЕНИЕ ПРОФИЛЯ -
Так вот что происходит
Когда пользователь открывает инвентарь
_theatre('sub', '.character-panel', 1);
$('.character-panel').show()
_loadInventory();
_loadPlayerStats();
_loadEquipment();
Я считаю, что проблема заключается в функции _theatre(). Что он делает, так это то, что он создает полный фиксированный div, который имеет 0,8 непрозрачность.
function _theatre(t, e, a){
if(a == 1){
window.paused = 1;
$('html').css('overflow', 'hidden');
$(e).wrap('<div class="theatre-' + t + '"></div>');
}
else{
window.paused = 0;
$('html').css('overflow', 'auto');
$(e).unwrap('<div class="theatre-' + t + '"></div>');
}
}
Если я прокомментирую функцию _theatre(), перетаскивание заметно более плавное.
Я попытался удалить непрозрачность из div, но не лучший результат. Что происходит? :/
div.theatre-sub {top:0; left:0; right:0; bottom:0; position:fixed; z-index:9996; background-color:rgba(0,0,0,0.8)}
div.theatre-dom {top:0; left:0; right:0; bottom:0; position:fixed; z-index:9998; background-color:rgba(0,0,0,0.8)}
Данные профилировщика http://imageshack.com/a/img819/8601/jbf2.png
Не зная конкретно, в чем проблема, я предлагаю вам начать использовать console.profile()
для проверки производительности вашего кода. Это должно помочь определить проблему.
Например:
console.profile("Profile One");
function yourCode()
{
// some code
}
console.profileEnd("Profile One");
ДЕМО:
Аналогично этому вы также можете использовать console.time()
в том же формате, чтобы отслеживать, сколько времени занимает функция в миллисекундах.