Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.05.2013, 15:35
Профессор
Отправить личное сообщение для Severtain Посмотреть профиль Найти все сообщения от Severtain
 
Регистрация: 25.04.2011
Сообщений: 277

Canvas Мерцание изображения.
Здравствуйте! Начал делать маленькую игру и столкнулся с проблемой... изображение сильно дергается.
Вот ссылка: http://site.lighst.com/Risk/Index.htm
Я использовал для зацикливания :

window.requestAnimFrame = (function(){
return window.requestAnimationFrame/1 ||
window.webkitRequestAnimationFrame/1 ||
window.mozRequestAnimationFrame/1 ||
window.oRequestAnimationFrame/1 ||
window.msRequestAnimationFrame/1 ||
function( callback ){
window.setTimeout(callback, 1000 / 30.0);
};
})();

А для проверки (стабилизации) передвижения небольшую временную функцию :
if (((new Date).getTime()-Timer)/1000>0.005)

Кто встречался с такими проблемами, и как это исправить? Заранее спасибо С меня плюсы за хорошие ответы.
Ответить с цитированием
  #2 (permalink)  
Старый 11.05.2013, 16:12
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Епт, а зачем функцию делить на единицу? КАК МОЖНО до такого додуматься???

alert(    window.alert / 1     )


window.requestAnimFrame = (function(){
return window.requestAnimationFrame || 
window.webkitRequestAnimationFrame || 
window.mozRequestAnimationFrame || 
window.oRequestAnimationFrame || 
window.msRequestAnimationFrame || 
function( callback ){
window.setTimeout(callback, 1000 / 30.0);
};
})();


И вобще, по шапке бы настучать тому человеку, кто распространил этот сниппет. Нужно создавать не глобальное свойство, а локальную переменную. Но впринципе сойдет и так.
Ответить с цитированием
  #3 (permalink)  
Старый 11.05.2013, 16:16
Профессор
Отправить личное сообщение для Severtain Посмотреть профиль Найти все сообщения от Severtain
 
Регистрация: 25.04.2011
Сообщений: 277

Штуку с единицей добавил я, это было давно и не помню почему..то ли в браузерах разный фпс выдавало то ли еще, что то
Ответить с цитированием
  #4 (permalink)  
Старый 11.05.2013, 16:19
Профессор
Отправить личное сообщение для Severtain Посмотреть профиль Найти все сообщения от Severtain
 
Регистрация: 25.04.2011
Сообщений: 277

Вот в чем дело, вставил я ваш код и фпс поднялся до 60. А подергивания так и не прошли.
Заметил, что они возникают переодически и в основном в первые 10-15 секунд после запуска кода.
Ничего нагроможденного у меня в коде нету, чтобы могло вызвать такой эффект.
Ответить с цитированием
  #5 (permalink)  
Старый 11.05.2013, 16:32
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 2,932

Сообщение от danik.js
alert(    window.alert / 1     )

На ноль бы делил сразу
Ответить с цитированием
  #6 (permalink)  
Старый 11.05.2013, 16:42
Профессор
Отправить личное сообщение для Severtain Посмотреть профиль Найти все сообщения от Severtain
 
Регистрация: 25.04.2011
Сообщений: 277

Через Хром нашел провал во времени, между двумя событиями очень большой промежуток времени пустую, сами по себе события выполняются сразу, с чем это может быть связанно?
Ответить с цитированием
  #7 (permalink)  
Старый 11.05.2013, 16:44
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Severtain
от в чем дело, вставил я ваш код и фпс поднялся до 60. А подергивания так и не прошли.
вывод очевидный . частота кадров 60 глазу не заметна.
60 и дёргается - в природе такого быть не может, кроме одной ситуации, но здесь её нет
Ответить с цитированием
  #8 (permalink)  
Старый 11.05.2013, 16:45
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

в упор 60 не вижу. 19-29 вижу. и это вполне нормально что на частоте 30 дёрганье видно
Сообщение от Severtain
Вот в чем дело, вставил я ваш код и фпс поднялся до 60.
интересно как могло до 60 подняться с этим?
Сообщение от Severtain
window.setTimeout(callback, 1000 / 30.0);
1000/30 = 30 ну и время на отрисовку и выходит в среднем 25 кадров

Последний раз редактировалось dmitriymar, 11.05.2013 в 16:49.
Ответить с цитированием
  #9 (permalink)  
Старый 11.05.2013, 16:48
Профессор
Отправить личное сообщение для Severtain Посмотреть профиль Найти все сообщения от Severtain
 
Регистрация: 25.04.2011
Сообщений: 277

dmitriymar,
Я уже кидал ссылку на игру, и как описал сообщением выше, я заметил, что есть временной провал между выполнениями функций (программа спит). Может кто нибудь сталкивался с этим, или есть компиляторы проверяющие потерю производительности?
Ответить с цитированием
  #10 (permalink)  
Старый 11.05.2013, 16:49
Профессор
Отправить личное сообщение для Severtain Посмотреть профиль Найти все сообщения от Severtain
 
Регистрация: 25.04.2011
Сообщений: 277

dmitriymar,
на любой частоте, я уже менял и 30 и 60 и 120. только в определенные этапы тормозит.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HTML5 Canvas. Поворот изображения Valdemor Элементы интерфейса 3 29.04.2013 17:12
Текст поверх изображения в canvas x3zone Events/DOM/Window 7 16.10.2012 07:29
Анимированные изображения на Canvas asci Общие вопросы Javascript 2 26.09.2011 00:02
загрузка изображения в canvas ChikiSt Opera, Safari и др. 2 21.09.2011 15:44
Отправка изображения из canvas на сервер m-mikle Общие вопросы Javascript 1 06.01.2011 19:45