Я пробовал несколько разных анимаций css, чтобы перемещать большое изображение вверх и вниз по экрану, пока у меня играет музыка. Я не нашел каких-либо изменений в скорости, перемещении расстояния и т. д., которые приводят к плавному переходу.
Кто-нибудь имел успех с большим изображением, переводом/анимацией на Chromecast?
Ответы (3)
Если вы посмотрите на события на панели временной шкалы отладчика Chromecast Chrome, вы обнаружите, что любая краска на разумном размере экрана занимает около 100 мс. Да, 1/10 секунды! Это делает любую анимацию (CSS, JQuery и т. д.) очень сложной и часто неустойчивой.
Что касается движения элементов, я не заметил никакой разницы в производительности анимации CSS по сравнению с производительностью анимации JQuery(). Я ожидаю, потому что ужасные времена Paint скрывают любые различия.
Можно было бы подумать, что Google использовал бы часть этого великолепного видеооборудования для улучшения производительности отрисовки браузера Chromecast, но этот тип приложения Chromecast, похоже, не является одним из их вариантов использования.
box-shadow: 2px 2px 10px 2px rgba(200, 200, 200, 0.1);
из элемента, который я анимировал, сократило время падения краски примерно на 40% и увеличило кажущуюся плавность анимации. Я предполагаю, что все, что изменяет основной фон (в данном случае альфа-тень), следует использовать с осторожностью или не использовать вообще.
- person FinnTheHuman; 26.10.2013
box-shadow
убивает производительность Chromecast. Я считаю, что то же самое относится и к text-shadow
. Крошечный графический процессор, безусловно, должен бороться с (я полагаю) внеэкранными буферами. Вы нашли других преступников, о которых нужно знать?
- person l33t; 11.06.2021
Помните, что устройство Chromecast
- имеет ограниченные ресурсы (как ЦП, так и память)
- имеет урезанную версию хрома
В результате вы не сможете делать много причудливых переходов/переводов, которые вы в противном случае могли бы сделать на рабочем столе, или производительность (насколько она плавная) не будет такой, какой вы хотели бы ее видеть. так что если вы воспроизводите медиа одновременно.
Я разрабатываю приложение chromecast, в котором у меня есть очень большой DIV с абсолютным позиционированием, который я анимирую на экране и за его пределами. Он имеет довольно сложный макет с html, css и изображениями, даже анимированными GIF-файлами. Однако, пока я удостоверяюсь, что во время выполнения анимации нет перекомпоновок, я получил хорошую производительность, используя transform: translate()
CSS для управления ее положением. Ранее я модифицировал свойство CSS top
, но производительность была жалкой.
В качестве примера, вот немного HTML:
<body>
<div>
... Main content ...
</div>
<div id="overlay">
... Overlay content here ...
</div>
</body>
И соответствующий CSS:
#overlay {
position: absolute;
top: 25px;
left: 50px;
width: 1180px;
height: 670px;
transition: all 1s;
transform: rotate(-2deg) translateY(750px);
}
#overlay.active {
transform: rotate(-2deg) translateY(0);
}
При этом все, что я делаю в своем javascript, — это включаю и выключаю класс active
, чтобы наложение отображалось и скрывалось. Я не могу заставить отладчик временной шкалы работать с удаленным хромкастом, поэтому я точно не знаю, что такое FPS, но объективно кажется, что это не менее 30 кадров в секунду. Он определенно кажется гладким. Надеюсь, это поможет.