Umíme ve Flashi - 1. díl - novinky ve verzi 8

Flash 8 je již na světě a přinesl nám mnoho zajímavých novinek. Dnešním dílem začneme postupné seznamování se s nejvýznamnějšími změnami. Dnes se podrobněji zaměříme na nový filtr „blur“, který nám umožňuje rozmazávat objekty.

Nové prostředí programu

Popisovat prostředí Flashe 8, by zde bylo zbytečné. Až na drobnosti se shoduje s předchozí verzí MX 2004. Pokud se tedy chcete seznámit s tímto prostředím, odkážu vás na první díly seriálu „Začínáme s Flash MX 2004“.

Jedna změna ale stojí za zmínku. Jedná o znovuzrozeného pomocníka během psaní ActionScriptu – Skript Assist. Po otevření panelu akcí jej spustíme kliknutím na stejnojmenné tlačítko v pravé horní části panelu. Pro mnohé začátečníky je toto opravdu přínosná změna, která ulehčí hodně času při psaní skriptů.

Filtr blur

Jak již z názvu plyne, jedná se o filtr, který nám umožňuje dosáhnout zajímavého efektu rozmazání objektu. Jedná se společně s filtrem pro stín, vyvýšení a vysvícení o nejjednodušší filtr, co se týče parametrů a použití.

Uvedené filtry mimo jiné najde na panelu vlastností, kde, pokud máme vybraný některý objekt, můžeme mu na záložce „filters“ přímo přiřadit potřebný filtr.

Klepněte pro větší obrázek

My už ale umíme pracovat bez problémů s příkazy AS, proto si vyzkoušíme vytvořit filtr pomocí skriptu. Pro ukázku si do nového dokumentu na hlavní scénu umístíme dva objekty. V našem případě jsem zvolil dynamické textové pole vložené v MC a obrázek v MC. Dynamické textové pole jsem zvolil pro ukázku, že i na tento objekt lze aplikovat nové filtry.

Předchozí verze Flashe neměly zrovna přehršel funkcí pro animaci dynamických textových polí. Oba objekty nezapomeneme pojmenovat na panelu vlastností například „objekt1“ a „foto1“.

Klikneme na první snímek hlavní osy a otevřeme si panel akcí. Budeme chtít vytvořit celkem tři funkce. Nejdříve si vytvoříme funkci pro jednorázové vytvoření rozmazaného objektu. Druhá funkce onen objekt opět zaostří a všechno zakončíme poslední funkcí, která nám bude zvolený objekt rozmazávat a následně jej opět zaostří.

Ale teď již k samotnému filtru. Nejdříve si připomeneme novinku, že MC dostaly, mimo dalších, novou vlastnost (indexované pole) „.filters“. Jedná se o pole, které obsahuje případné použité filtry pro zvolený objekt.

Postup je takový, že si nejdříve vytvoříme objekt filtru, kterému přiřadíme určité vlastnosti a poté jej vložíme do pole „filters“ některého MC. Kombinací několika filtrů lze pak dosáhnout velmi zajímavých efektů.

Máme tedy otevřený panel akcí, do kterého nyní vložíme následující skript:

import flash.filters.BlurFilter;
addSum = function (objekt1, velikost) {
 sumX = velikost;
 sumY = velikost;
 sumQ = 3;
 var filtrSum:BlurFilter = new BlurFilter(sumX, sumY, sumQ);
 var poleFiltru:Array = new Array();
 poleFiltru.push(filtrSum);
 objekt1.filters = poleFiltru;
};
removeSum = function (objekt2) {
 var filtr:Array = objekt2.filters;
 hodnota = filtr[0].blurX;
 if (hodnota != undefined) {
  objekt2.onEnterFrame = function() {
   if (hodnota != 0) {
    filtr[0].blurX = hodnota;
    filtr[0].blurY = hodnota;
    objekt2.filters = filtr;
    hodnota--;
   }
  };
 }
};

V prvním řádku musíme před použitím nejdříve požadovaný filtr importovat. Následuje funkce, kterou budeme volat s parametrem (objekt) který definuje objekt, na který se filtr bude aplikovat. Druhý parametr funkce slouží jako hodnota velikosti rozmazání.

Filtr „blur“ má celkem tři parametry. První dva určují velikost rozmazání v x-ovém a y-ovém směru, třetím parametrem je kvalita rozmazání. Kvalita o hodnotě 3 je velmi dobrá, naopak hodnota 1 znamená velmi nízkou kvalitu výsledného efektu.

My si vytvoříme si objekt filtru s názvem „filtrSum“ Velikost určuje parametr funkce „velikost“, kvalitu máme nastavenu na nejlepší. Všimneme si, že nový filtr vkládáme do pole „poleFiltru“, které následně vložíme do pole „filters“ objektu. Použitím uvedené funkce dojde k okamžitému rozmazání objektu, na který je aplikována.

Druhá funkce rozmazaný objekt opět zaostří. Abychom zjistili aktuální hodnotu rozmazání, musíme si vytvořit pomocné pole „filtr“, do kterého vložíme pole filtrů objektu. Protože víme, že jsme použili pouze jeden filtr, najdeme jej ihned v první prvku pole filtrů objektu.

V podmínce zjistíme, jestli jsme již filtr aplikovali, pokud ano, použijeme událost „onEnterFrame“ pro snižování hodnoty rozmazání. Využijeme přitom naše pomocné pole, kde aktualizuje potřebné hodnoty a zpět je vložíme do pole filtrů objektu. Nemusíme vytvářet další objekty filtrů, stačí nám jen aktualizovat příslušné proměnné.

Následuje další část skriptu, ve které zkombinujeme obě dvě funkce:

vytvorSum = function (objekt) {
 objekt.blurring = true;
 rozmaz = true;
 sumX = 1;
 sumY = 1;
 sumQ = 3;
 velikostSumu = 10;
 var filtrSum:BlurFilter = new BlurFilter(sumX, sumY, sumQ);
 var poleFiltru:Array = new Array();
 poleFiltru.push(filtrSum);
 objekt.filters = poleFiltru;
 objekt.onEnterFrame = function() {
  if (objekt.blurring) {
   if (sumX<velikostSumu && rozmaz == true) {
    sumX++;
    sumY++;
   } else {
    rozmaz = false;
    sumX--;
    sumY--;
   }
   if (sumX<0) {
    sumX = 0;
    sumY = 0;
    objekt.blurring = false;
   }
   var filtr:Array = objekt.filters;
   filtr[0].blurX = sumX;
   filtr[0].blurY = sumY;
   objekt.filters = filtr;
  }
 };
};

objekt1.onPress = function() {
 vytvorSum(objekt1);
 addSum(foto1, 6);
};
foto1.onPress = function() {
 removeSum(foto1);
};

Pro efekt postupného rozmazání a opětovného zaostření objektu nám opět dobře poslouží událost „onEnterFrame“ objektu, pomocí níž budeme postupně přidávat a pak ubírat velikost rozmazání.

Nejdříve tedy aplikujeme filtr na příslušný objekt, následuje postupné zvyšování a snižování hodnoty rozmazání a nakonec aktualizace parametrů filtru díky našemu pomocnému poli „filtr“.

Úplný konec skriptu patří jen přiřazení funkcí k příslušným objektům na scéně. Objektu, který zobrazuje textové pole, přiřadíme funkci pro pozvolnou změnu rozmazání a funkci pro jednorázovou aplikaci rozmazání na druhý objekt. Druhému objektu pak přiřadíme funkci pro pozvolné zaostření.

Tento nový filtr umožňuje opravdu zajímavé efekty, ale abychom nezůstali jen u jednoho, v příštím díle se zaměříme na další z nových filtrů.

Zdrojový soubor dnešní ukázky ke stažení zde.

Náhled dnešní ukázky zde. Je potřeba mít nainstalovaný Flashplayer8.

Témata článku: Software, Programování, Pole, Assist

1 komentář

Nejnovější komentáře

  • gully, gully 10. 10. 2005 19:07:08
    http://diskuse-zaciname-s-flash-mx-2004.wz.cz
Určitě si přečtěte

Monitory do 10 tisíc: poradíme, jaké jsou teď nejlepší

Monitory do 10 tisíc: poradíme, jaké jsou teď nejlepší

** Dobrý monitor s kvalitním panelem lze pořídit pod tři tisíce korun ** Pod deset tisíc si můžete koupit pracovní 27" monitor nebo nejlevnější použitelné 4K ** Vybrali jsme také ideální model pro vícemonitorovou konfiguraci

27.  11.  2016 | Stanislav Janů | 13

Sbíječky vyměnili za klávesnice. Nový projekt má za cíl přeučit horníky na programátory

Sbíječky vyměnili za klávesnice. Nový projekt má za cíl přeučit horníky na programátory

** Programátorů je málo a horníků bez práce po uzavření dolu Paskov bude moc ** Problém řeší unikátní projekt ** Pilotní kurz dává naději, že by z horníků mohli být použitelní kodéři

28.  11.  2016 | David Polesný | 78