Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вопрос о производительности (https://javascript.ru/forum/misc/28076-vopros-o-proizvoditelnosti.html)

Раед 07.05.2012 10:59

macdack,
Canavas - это в принципе обычно MVC. Информацию о каждом фрагменте храните в переменных (или объектах) и осуществляете действия над этими переменными. А отрисовку на канвазе выполняйте в интервале с фиксированной частотой (лучше с минимальной частотой анимации).

dmitriymar 07.05.2012 11:05

Цитата:

Сообщение от Раед
А отрисовку на канвазе выполняйте в интервале с фиксированной частотой (лучше с минимальной частотой анимации).

будтобы нельзя обновлять разные участки канвы с различной частотой..

Раед 07.05.2012 11:07

Цитата:

Сообщение от dmitriymar
будтобы нельзя обновлять разные участки канвы с различной частотой..

Можно, но вдруг они накладываются друг на друга

macdack 07.05.2012 11:13

всё же мне видится небольшой код (например просто массив) к каждом из задействованных пикселов (их может быть немного)

каждый пиксел переодически просматривается и перерисовывается
переодичеки - наверное как в обычном видеофайле, например 60 раз в секунду

vadim5june 07.05.2012 11:15

Цитата:

Сообщение от macdack (Сообщение 173069)
задачка примерно такая - в разных местах канваса разные фрагменты анимации пикселов
у каждого своя частота смены "кадров" анимации
поэтому я и говорю - каждым участком управляет свой код js
как это организовать архитектурно покане представляю как

Я примерно так бы сделал
Для кажого фрагмента получаем растровые данные(специальный объект) из указанного прямоугольника с помощью ImageData getImageData(x,y,w,h)
Далее получаем отсюда массив-пикселей в формате rgba
Производим необходимые манипуляции и периодически выводим обратно с помощью команды putImageData(ImageData idata,x,y)
Ну и так для каждого фрагмента

Раед 07.05.2012 11:26

Цитата:

Сообщение от macdack
например 60 раз в секунду

60 раз в секунду - это каждые 16 миллисекунд! Даже при использовании канваза это издевательство над процессором.

macdack 07.05.2012 11:36

Цитата:

Сообщение от Раед (Сообщение 173081)
60 раз в секунду - это каждые 16 миллисекунд! Даже при использовании канваза это издевательство над процессором.

ну это я так, для красново словца, вспоминая аватара 60герц ))

конечно же если будет перегруз то можно обойтись каким нибудь традиционным минимумом 20 - 30 герц

но при более высоких частотах подозреваю появятся возможности для более выразительных анимационных эффектов

опять же не стоит отбрасывать возможность 3д просмотра в очках

vadim5june 07.05.2012 11:41

Цитата:

Сообщение от macdack (Сообщение 173082)
опять же не стоит отбрасывать возможность 3д просмотра в очках

Если речь идет о 3d то стоит посмотреть на webgl-там скорость намного выше потому что видеокарта задействована
Но webgl не кроссбраузерный-microsoft вообще нехочет поддерживать

melky 07.05.2012 11:51

Цитата:

Сообщение от Раед (Сообщение 173081)
60 раз в секунду - это каждые 16 миллисекунд! Даже при использовании канваза это издевательство над процессором.

используйте requestAnimationFrame - исполнение функции перед reflow. есть везде, где есть канвас.


Часовой пояс GMT +3, время: 06:34.