Actionscript blur / shadows / glows насколько они тяжелые на процессоре? - PullRequest
1 голос
/ 22 мая 2010

Я скажу 10 предметов в определенном пространстве, если я применяю свечение и тени для всех них, и все эти предметы обычно статичны.Другие персонажи тоже двигаются вокруг них.Так что мне просто интересно, будет ли разумно использовать векторы с ActionScript размытия и свечения.Или иметь PNG?и если я не могу иметь PNG и должен работать с векторами с Glow / Blurs / Shadows.Будут ли они слишком загружены процессором?

Ответы [ 2 ]

1 голос
/ 22 мая 2010

Когда вы применяете растровый фильтр (свечение, тень и т. Д.) К любому контенту, Flash автоматически включает функцию, называемую растровым кэшированием.Пока эта функция включена, Flash рендерит объект как растровое изображение, а затем будет использовать это растровое изображение вместо объекта, пока не решит, что ему необходимо повторно выполнить рендеринг объекта.Flash выполнит повторную визуализацию объекта каждый раз, когда изменяется внутреннее (т.е. дочернее) значение объекта, или если сам объект претерпевает какие-либо преобразования, кроме простого перевода (изменения в x / y).

Что этоозначает следующее:

  1. Если ваш объект не изменяется внутри и не вращается и не меняет масштаб, то после применения фильтра не имеет значения, содержит ли объект растровые изображения или векторы.Внутренне Flash кэшировал его в растровое изображение, поэтому он будет работать очень хорошо независимо от того, что находится внутри.
  2. Если объект изменяется внутренне, или вращается, или масштабируется, то Flash будет повторно визуализировать объект каждый кадр даже с фильтрамиприменяется.В этом случае наличие растровых изображений внутри объекта будет работать лучше, чем наличие сложных векторов (включая текст не из устройства).
  3. Если возможно, лучше применять фильтры к дочерним объектам, которые не требуют частой повторной обработки.отображается вместо применения к родительскому объекту, который будет.
0 голосов
/ 22 мая 2010

Лоты PNG с эффектами (т. Е. Размываниями, свечениями, тенями и т. Д.), Встроенными в них, почти всегда превосходят партии векторных объектов с теми же эффектами, применяемыми через код. Если вы не можете использовать PNG, вы всегда можете воспользоваться небольшим трюком ... BitmapData.applyFilter ()! Этот метод великолепен, и мне удалось обнаружить значительное увеличение производительности при тех же самых обстоятельствах, которые вы описали. Вместо использования векторной графики я сделаю снимок растрового изображения векторного объекта следующим образом:

var vectorGraphic:MovieClip = someVectorObectThatNeedsFiltersAppliedToIt;
var bmd:BitmapData = new BitmapData(vectorGraphic.width, vectorGraphic.height, true, 0x000000);
var glow:GlowFilter = new GlowFilter(0x00ffff, 1, 4, 4, 2, 1, false, false);
bmd.draw(vectorGraphic, null, null, null, null, true);
bmd.applyFilter(bmd, new Rectangle(0, 0, bmd.width, bmd.height), new Point(0, 0), glow);
var bmp:Bitmap = new Bitmap(bmd, 'never', true);

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...