Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Что происходит с фильтрами, которые заменили в процессе анимации? (http://www.flasher.ru/forum/showthread.php?t=131807)

mrMEM 28.10.2009 18:47

Что происходит с фильтрами, которые заменили в процессе анимации?
 
Создаю динамически возникновение текстого блока. использую BlurFilter.
меня интересуют ответы на вопросы:
- можно ли не создавать заново BlurFilter в процессе анимации, а пользоваться прошлым (и почему)?
- и что происходит с отработанными BlurFilter-ами?

Код AS3:

MainPageTextBlockMC = new MainPageTextBlock();
stage.addChildAt(MainPageTextBlockMC, 2);
MainPageTextBlockMC.filters = [new BlurFilter(0,0,3)];
 
var MainPageTextBlockTween:Tween = new Tween(MainPageTextBlockMC, "x", Strong.easeOut, MainPageTextBlockMC.x-100, MainPageTextBlockMC.x, 0.8, true);
MainPageTextBlockTween.addEventListener(TweenEvent.MOTION_CHANGE, MainPageTextBlockChangePosition);
 
function MainPageTextBlockChangePosition(e:TweenEvent){
        var tween = e.target;
        var percent = tween.func(tween.time, 0, 1, tween.duration)
        var targetMC:MovieClip = tween.obj;
 
        targetMC.filters = [new BlurFilter(20*(1-percent),0,3)]; // что произойдет с прошлым фильтром?
 
        //targetMC.filters[0].blurX = 20*(1-percent); //почему нельзя сделать так?
        targetMC.alpha = percent*percent;
}

бонусом интересуюсь, что произойдет если сделать так:
Код AS3:

MainPageTextBlockFluid = new FluidObject(...);
MainPageTextBlockFluid = new FluidObject(...);

первый FluidObject остается в памяти? можно его самостоятельно удалить из памяти?

Hidest 28.10.2009 20:02

Его потом уничтожит GC, так как ссылок больше на него нет... Делайте отдельно фильтр и используйте.

Код AS1/AS2:

var bfilter:BlurFilter = new BlurFilter(20*(1-percent),0,3);
targetMC.filters = [bfilter];

если надо изменить характеристику фильтру, делайте новый.

mrMEM 29.10.2009 13:01

а самостоятельно ни как не очистить это дело?
меня учили убирать за собой.. mr etc кажется писал где-то, что GC не всегда справляется со своей работой

Hidest 29.10.2009 13:53

targetMC.filters = null; - уберет все фильтры, наложенные на объект

но фильтр все равно будет висеть в памяти до GC... А как попытаться форсировать GC - поиск по форуму поможет.


Часовой пояс GMT +4, время: 16:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.