PDA

Просмотр полной версии : можно ли как то побороть расточение ресурсов при использовании glowfilters?


darksranger
30.07.2008, 10:02
план действий:
рисуем квадрат
накладываем на него glow ( получается светящийся квадрат )
далее tween классом делаем анимацию ( elastic.easeOut )
и вот тут чудеса, без glow все отлично, с glow тормозит анимация!

Пока вышел из положение, благодаря photoshop's ( нарисовал там квадрат, наложил glow и експортировал в flash )
анимация не тормозит

Как сделать чтобы glow не тормозил ?
Анимация была полностью программная ( аналог фрэймовый тормозит так же )


Код, мало ли я где то, что то не удаляю
import flash.filters.GlowFilter;
import mx.transitions.Tween;
import mx.transitions.easing.*;
_global.createRectGlow = function(nameMc, filter, w, h, x_, y_, bgc, color, b, s, q, iner, visibl) {
var w:Number = w;
var h:Number = h;
var bgColor:Number = bgc;
var rect:MovieClip = _root.createEmptyMovieClip(nameMc, _root.getNextHighestDepth());
rect.beginFill(bgColor);
rect.lineTo(w, 0);
rect.lineTo(w, h);
rect.lineTo(0, h);
rect.lineTo(0, 0);
rect._x = x_;
rect._y = y_;
rect._visible = visibl;
if (filter == "yes") {
var filter:GlowFilter = new GlowFilter(color, .8, b, b, s, q, iner, iner);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;
}
};
nameMc = "_mc";
filter = "yes";
w = 492.5;
h = 374.1;
x_ = 155.4;
y_ = 161.2;
bgc = 0xFFFFFF;
color = 0xFFFFFF;
b = 11;
s = 2;
q = 3;
iner = false;
visibl = false;
_global.createRectGlow(nameMc, filter, w, h, x_, y_, bgc, color, b, s, q, iner, visibl);
nameMc = "_mc2"
filter = "yes"
w = 531.1
h = 428.5
x_ = 131.7
y_ = 140.2
bgc = 0xFFFFFF
color = 0xFFFFFF
b = 5
s = 2
q = 3
iner = true
_global.createRectGlow (nameMc,filter,w,h,x_,y_,bgc,color,b,s,q,iner,false)

_mc._visible = false



function tweening() {
clearInterval(videoInterval);
_mc._visible = true;
time = 0.8;
var pageTween1:Tween = new Tween(_mc, "_height", Elastic.easeOut, _mc._height, 430, time, true);
var pageTween2:Tween = new Tween(_mc, "_width", Elastic.easeOut, _mc._width, 530, time, true);
var pageTween3:Tween = new Tween(_mc, "_x", Elastic.easeOut, _mc._x, 131, time, true);
var pageTween4:Tween = new Tween(_mc, "_y", Elastic.easeOut, _mc._y, 141.0, time, true);
}
var videoInterval:Number = setInterval(tweening, 730);


function tweening_echo () {
clearInterval (echoInterval)
trace("4e")
_mc2._visible = true
time = 1.4
var echoTween1:Tween = new Tween(_mc2, "_height", Strong.easeOut, _mc2._height, 465.1, time, true);
var echoTween2:Tween = new Tween(_mc2, "_width", Strong.easeOut, _mc2._width, 573.8, time, true);
var echoTween3:Tween = new Tween(_mc2, "_x", Strong.easeOut, _mc2._x, 110.5, time, true);
var echoTween4:Tween = new Tween(_mc2, "_y", Strong.easeOut, _mc2._y, 121.9, time, true);
var echoTween5:Tween = new Tween(_mc2, "_alpha", Strong.easeOut, _mc2._alpha, 50, time, true);
var echoTween5:Tween = new Tween(_mc2, "_alpha", Strong.easeOut, _mc2._alpha, 0, time, true);

}


var echoInterval:Number = setInterval(tweening_echo,800)


Xотелось бы, сделать все програмно...

iNils
30.07.2008, 10:30
Ни каких тормозов не вижу. У вас какой процессор?

darksranger
30.07.2008, 10:58
атлон 2100 mg
И реально притармаживает, та же анимация, сделанная по принципу photoshopa ( импорт квадрата с glow ) не тормозит.

Сравнил сейчас две анимации ( одна программно созданный glow, тот что выше ) и второй, тот что с импортом, разница колосальная.
Видимо у меня процессор слабенький :( вобщем придется остатся с импортом, так как, если накинуть еще браузерную тормознутость, ( у меня например ролики проигрываются не много медленнее в браузере, чем просто в плеере ) то вобще будет, полный тормоз (((

PS. я просто спрашивал к тому, может я чтото не удаляю или не выгружаю и поэтому идет торможение.

Crash512
30.07.2008, 17:29
А какая видюха?.. Старые видюхи, плохо себя ведут с этими эффектами. Но я рекомендую на объект наложить функцию "cacheAsBitmap()". Тогда получится то же самое, что у тебя с фотошопом... Квадрат с фильтром должен преобразоваться в битмап.

darksranger
30.07.2008, 20:45
да видео старое !!!
хм нада попробовать, я принцепи уже начал не много другим заниматся :) но всегда найдется время, чтобы переписать, на программную анимацию кусочек проэкта ;)
вечерком попробую ! спасиб:)

UPD
Попробовал, в коде сразу после фильтра rect.filters = filterArray;
rect.cacheAsBitmap = true
так же притормаживает, аналог более динамично выглядит, наверно все таки видяха моя ведро .... вобщем ладно :) будем ити путем photoshopa (((((

Crash512
31.07.2008, 04:15
ноу-ноу-ноу... .cacheAsBitmap(); и всё... помоему так..

darksranger
31.07.2008, 08:19
хм, я просто в яндексе вбил там примеры были именно с true оО

etc
31.07.2008, 13:36
А какая видюха?.. Старые видюхи, плохо себя ведут с этими эффектами. Но я рекомендую на объект наложить функцию "cacheAsBitmap()". Тогда получится то же самое, что у тебя с фотошопом... Квадрат с фильтром должен преобразоваться в битмап.

Flash Player не работает с видеокартой.

darksranger
31.07.2008, 14:18
__etc ты тоже считаешь, что у меня процессор тормоз ?

PS впринцепи, я думаю сеня проверю, вроде как мама собралась новый ноут брать, токо жаль что не мак ((((((((

С другой стороны то что ты видеш на экране отображает видео карта. Хотя и прощеты были проведены на ЦП >_<

Crash512
31.07.2008, 18:20
__etc... Очень странно...=)

etc
31.07.2008, 19:08
__etc... Очень странно...=)

Это ещё и печально.

Яски
31.07.2008, 22:52
Попробовал, в коде сразу после фильтра rect.filters = filterArray;
rect.cacheAsBitmap = true
Не имеет смысла

rect.filters = filterArray;
trace(rect.cacheAsBitmap); // Возваращает true

Потому как после установки фильтра автоматически cacheAsBitmap выставляется в true