2012-03-14 5 views
9

Я пытаюсь создать движущиеся огни с помощью трейлов для веб-сайта/приложения HTML5, ориентированного на iPad 2. Интересно, какой лучший способ сделать это - использовать ли HTML5 жизнеспособна вообще. Я выбрал HTML5, потому что проще и дешевле разрабатывать и развертывать, чем родные приложения iOS с Objective C. Конечно, если окажется, что HTML5 просто не обеспечивает достаточную производительность, мне, возможно, придется проглотить горькую пилюлю.Самый эффективный способ нарисовать частицы в HTML5 на iPad 2

Во всяком случае, чтобы дать вам впечатление, что я говорю, это то, что я до сих пор:

screenshot http://devdali.no-ip.org/mathias/test-lights/screenshots/1.jpg

Или вы можете увидеть его в действии here (работает только в браузерах на основе WebKit) ,

Сначала я попытался использовать холст HTML5 и рисовать радиальные градиенты в виде частиц аналогичным образом, как вы видите выше. Это сработало, но частота кадров была ужасной даже на моем настольном компьютере!

Итак, после небольшого чтения я узнал, что преобразования CSS3 могут быть аппаратно ускорены, поэтому я строю версию, которую вы видите выше. Каждая «частица» представляет собой 64-кратное изображение png. Для каждого света есть «головной» свет (один img), за которым следует след, состоящий из 115 img элементов. Каждый элемент img преобразуется с использованием «translate3d» (а также масштабирования и вращения). Также непрозрачность каждого элемента настраивается динамически.

Выполнение этого способа обеспечило гораздо лучшие кадры на моем компьютере, но я сомневаюсь, что iPad 2 справится с этим.

Я был бы признателен, если бы кто-нибудь мог дать мне несколько советов о том, как улучшить производительность этого в целом и рассмотреть целевую платформу.

Спасибо за любую помощь заранее!

+2

, а не сомневаться в производительности, почему бы не попробовать на самом деле? Вы можете быть удивлены ... – Alnitak

+2

Протестировано на iPad2 для ya. Это отвратительно и медленно. Кроме того, вы не настроили масштабирование в режиме просмотра, потому что у него есть странная вещь для увеличения. – Armstrongest

+0

Большое спасибо! Думаю, это подтверждает мои опасения. @Alnitak Я только получил iPad 1 здесь для тестирования, который, конечно, субоптимальный ... – Bunkerbewohner

ответ

0

Это должно быть построено на холсте. Отъезд EaselJS и этой демонстрации.

http://easeljs.com/ http://easeljs.com/demos/MusicVisualizer/index.html

0

Вы могли бы оптимизировать спектакли в МНОГО с помощью WebGL (, который поддерживается на iPad2.) ... который не поддерживается для базовых html-страниц на сафари ios, как указано в Nison Maël ...

На данный момент у вас есть только холст в качестве решения. Что еще даст вам лучшие спектакли ...

(Вы можете проверить этот блог для получения дополнительной информации: http://learningwebgl.com/blog/

С маловерами и временем вы будете поражены)

+0

Я читал, что у iOS нет WebGL, кроме рекламы. Однако, если вы можете использовать WebGL, это определенно путь. Я написал библиотеку частиц: http://arcanis.github.com/js.spark/test/ –

1

Если вы принимаете небольшие изменения в силу, некоторые другие процедуры могут работать быстро:

  • Вместо того чтобы рисовать следы осветителя средств многих частиц, просто сделать свет в своих нынешних позициях в Canvas элементе.

  • Затем вы можете затемнить все изображение в начале кадра, заполнив черный прямоугольник с очень низкой непрозрачностью сверху. Таким образом, тропы исчезают в темноте, но не изменят их цвет, как сейчас.

  • Количество операций рисования, однако, значительно уменьшится. Самой дорогостоящей операцией будет заполнение прямоугольника затухания для каждого кадра.