abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:00 | IT novinky

    DuckDuckGo AI Chat umožňuje "pokecat si" s GPT-3.5 Turbo od OpenAI nebo Claude 1.2 Instant od Anthropic. Bez vytváření účtu. Všechny chaty jsou soukromé. DuckDuckGo je neukládá ani nepoužívá k trénování modelů umělé inteligence.

    Ladislav Hagara | Komentářů: 0
    dnes 14:22 | IT novinky

    VASA-1, výzkumný projekt Microsoftu. Na vstupu stačí jediná fotka a zvukový záznam. Na výstupu je dokonalá mluvící nebo zpívající hlava. Prý si technologii nechá jenom pro sebe. Žádné demo, API nebo placená služba. Zatím.

    Ladislav Hagara | Komentářů: 2
    dnes 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | Nová verze

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    včera 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 13
    včera 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 2
    včera 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 10
    včera 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    KDE Plasma 6
     (68%)
     (10%)
     (2%)
     (20%)
    Celkem 565 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Animované Flash bannery pomocí Inkscape, swfmill a mtasc...

    5.4.2009 15:25 | Přečteno: 4415× | Technologie | Výběrový blog

    Abych nějak uvedl následující článek..., jsem člověk který se straní Flashe, co může. Ale pokud jde o složitější animované reklamní proužky, potom pragmatická mysl nemůže zvolit nic lepšího, než je právě Flash.

    Co se dozvíte: jak vytvářet jednoduché vektorové animace ve Flashi a Actionscriptu bez pomoci placených nástrojů.

    Co se nedovíte: jak animovat pomocí deklarativního zápisu nebo pomocí křivek.

    Jak moc do hloubky: jen povrchně – je to o tom, jak začít.

    Flash se mi nelíbí hlavně ze dvou důvodů: 1) musím se kvůli němu učit další grafické prostředí – navíc placené (to se asi mění), 2) musím se kvůli němu učit další programovací jazyk – jakoby jich špatně člověk neuměl už dost.

    Na druhou stranu přiznejme si, že internet je na to prachbídně, co se dodržování standardů týče. Flash je v tomto prostředí učiněný balzám na duši grafikům, kterým jde o design a výsledek a ne o vynucené uhýbání od záměru a obcházení situace různými hacky a triky.

    Protože jsem se Flashi tak dlouho a úspěšně vyhýbal, věděl jsem o něm asi jen to, jak ho nainstalovat do prohlížeče. Návod, který vám překládám, musí být proto zákonitě plný nepřesností a chyb, ale stejně by se mohl řadě lidí hodit. Pokud někde na webu existuje podobný návod, měl jsem asi smůlu a nenarazil na něj. Prosím čtenáře, kteří mají s Flashem více zkušeností, aby mě laskavě poopravili, tam kde ujedu. Věci, které jsem příliš nezkoušel jsou označeny otazníkem v závorkách. A vůbec je celý článek jen stručným náhledem, aby usnadnil krkolomné začátky.

    Začínáme

    Co je třeba mít nainstalované:

    Další užitečné nástroje:

    Odkazy a zdroje:

    Termíny a zkratky:

    swf – přípona souboru pro binární flash animaci, která může navíc obsahovat bitmapové obrázky, videa, zvuky, sady fontů, vše uložené ve třídách (assets ?), které mohou být navíc doplněny programem, který je ovládá (skript – konkrétně Actionscript)

    flv – flash video file

    as – Actionscript – přípona označující soubor scriptu, který lze přeložit a vložit do swf. Poslední verze je tuším verze 3. My budeme pracovat s verzí 2.

    Pokračujeme

    Pokud máte první tři nástroje k dispozici (jsou ve verzi pro linux i pro windows..?), potom vás asi bude zajímat jak fungují.

    K dispozici jsou dva konzolové programy: swfmill a mtasc. Ten první generuje jakousi kostru (skelet) výsledné animace. Umí importovat řadu objektů, ať už jde o obrázky, videa, zvuky, vektorovou grafiku (svg – vytvořené pomocí Inkscapu), nebo třeba další swf soubory a jejich části (?). Ten druhý umí přeložit Actionscript a vyrobit zcela nový swf, nebo skript vstříknout (injection) do existujícího swf. Co je kostra a co skript a jako fungují si povíme níže.

    Inkscape je skvělý interaktivní nástroj pro vektorové kreslení a je o něm k nalezení mnoho návodů (http://www.abclinuxu.cz/clanky/navody/inkscape-1-seznameni).

    Kostra

    swfmill – je konzolový nástroj, který z nadefinované xml struktury (těsně kopírující Flash formát), vygeneruje swf. Zdrojový kód pokusného souboru test.xml může vypadat takto:

    <?xml version="1.0" encoding="utf-8" ?>
    <movie width="728" height="90" framerate="30">
    <background color="#ffffff" />
    	<frame>
    		<library>
    			<clip id="neco" import="test.png" />
    		</library>
    	<place id="neco" name="obrazek1" x="10" y="-40" depth="1" />
    	</frame>
    </movie>
    

    Který konvertujeme pomocí:

    swfmill simple test.xml test.swf

    Výsledkem je swf soubor, který už lze zobrazit (pomocí nějakého přehrávače či webového prohlížeče) – neměl by dělat nic jiného, než jen zobrazit obrázek test.png.

    Asi je jasné jak se věci mají, přesto: vše je uloženo v párovém tagu <movie> jehož parametry definují rozměry výsledné animace a počet snímků za vteřinu (nevím jak jiné Flash přehrávače, ale v prohlížeči Firefox, je swf animace spuštěna v celém okně a objekty mimo definované rozměry mohou být viditelné – čili nastavené rozměry jsou něco jako preferovaný výřez animace, kterým se přehrávače můžou řídit (?)).

    Druhým důležitým párovým tagem je <frame>. Abych pravdu řekl, nezkoušel jsem vytvářet animaci pomocí swfmill. Skutečně jsem vždy jen vytvářel kostru a naimportoval v ní všechny nezbytné objekty, které se měli zobrazit. Rámec pravděpodobně definuje jeden obrázek výsledného Flashe, popřípadě jednu scénu – nezkoušel jsem. Představuji si to tak, že uvnitř framu může žít celá jedna animace, která je nezávislá na jiném framu a mezi framy lze automatizovaně přepínat (na požádání uživatele) (?).

    Další párový tag <library> slouží k importovaní či definování objektů, které pak mají být přístupné přes Actionscript (?). Aby se takto importovaný nebo definovaný objekt zobrazil, je třeba ho umístit pomocí nepárového tagu <place>, který již nesídlí v sekci library.

    Nepárový tag <place> slouží k umísťování nadefinovaných či naimportovaných objektů do scény. Je to jakoby se v sekci library definovaly objektové třídy a pomocí tagu place se vytvářely jejich instance. Pomocí parametru id se určují právě třída, a pomocí name, jméno výsledné instance. Kromě toho lze určit pozice a hladinu vložení – depth. Hladina musí být pro každou instanci unikátní (?), pokud se použije dvakrát place do stejné hladiny, pak se první place zakryje tím druhým.

    Importování

    V mých pokusech importuji a definuji nové objekty vždy v sekci library. Tento typ importu je takzvaně statický (importoval lze i v Actionsriptu – pak se hovoří o dynamickém importu) a výsledkem je, že importovaný objekt se stává součástí výsledného swf (čili je přibalen k výsledné animaci).

    Tady je pár tagů k tomu určených:

    <clip id="komponenta" import="komponenta.png" /> <font id="vera" import="library/vera.ttf" glyphs="0123456789" /> <sound id="myID" import="blah.mp3" /> <import file="library/library.swf" url="http://foo.com/library.swf" /> <textfield id="hellobox" width="200" height="50" size="10" font="vera" text="hello world!" />

    Vkládání a volání

    Tagy které leží mimo sekci library jsou například tyto:

    <place id="foobar" name="myFoobar" x="10" y="10" depth="1" /> <call object="Main" method="main" />

    Překlad

    Překlad do swf, jak již bylo napsáno výše se provádí tímto příkazem:

    swfmill simple test.xml test.swf

    Kromě toho umí swfmill použít v podstatě jakékoli xml, které si nadefinujete (nezkoušel jsem - referenční manuál by měl být tady: http://swfmill.org/doc/reference.html) a měl by umět i reverzní postup – z swf generovat xml (také jsem nezkoušel). Vždy jsem používal již předdefinovaný simple.

    Skript

    mtasc – je také konzolový nástroj určený pro překlad Actionscriptu (AS) napsaného v textovém souboru do swf. Actionscript je syntaxí blízký Javascriptu a začít ho používat není až takový problém jak jsem se zpočátku bál (což neeliminuje možné prohřešky, kterých se můžu mimoděk dopouštět). MTASC překládá Actionsript 2. Pokud chcete pracovat s Actionsriptem 3, můžete zkusit použít Haxe (http://haxe.org/), který jsem nezkoumal, ale vypadá zajímavě.

    To co musíte dodržet při programování a co nemusí být jasné na první pohled je:

    1. vše musí být umístěno ve třídě,
    2. jedna třída musí být v jednou souboru.

    To nikterak nebrání možnosti použít statické funkce (nevím, zda jde o třídní metody v pravém smyslu). A jednou velmi důležitou statickou funkcí je funkce main(), kterou můžete překladači MTASC zadat v parametrech jako vstupní bod (Entry Point) – tam se začne vykonávat kód.

    Zdrojový pokusný kód souboru test.as může vypadat takto:

    class Main {
    	static function main(mc) {
    		_root.createTextField("tpole",0,0,0,800,600);
    		_root.tpole.text = "Žebřiňák úpěl";
    	}
    }
    

    Který se kompiluje tímto příkazem:

    mtasc -swf pokus.swf -main -header 728:90:30 test.as

    Čímž dostaneme soubor pokus.swf zobrazující pouze textové pole.

    Globální prvky

    Z AS je v podstatě přístupné vše. Celá výsledná animace (či aplikace) je přístupná z globální proměnné (?) _root. Proměnná _root někdy funguje jako asociativní pole a jindy jako kolekce objektů. Například přístup k objektům (nejčastěji MovieClipům), definovaným v kostře, lze realizovat takto:

    _root.vlozenyObrazek._x = 10; _root["idVlozenehoObrazku"]._x = 10;

    Což v obou případech mění ixovou souřadnici vloženého obrázku.

    Další důležitý objekt je třída Stage, přes kterou lze přistupovat k rozměrům zobrazovací plochy:

    Stage.width – obsahuje šířku zobrazovací plochy.

    Takových globálních prvků bude jistě daleko více. Pro podrobnější reference zkuste (http://flash-reference.icod.de/)

    Objekt MovieClip

    Objekt MovieClip (MC) je asi nejdůležitějším objektem pro naše potřeby. Vše co bylo vloženo v kostře je vlastně třída nebo instance MC (?). V AS lze mimo jiné vytvořit vlastní třídu děděním z MC a nebo lze vytvořit prázdný MC.

    MC má několik obecných atributů, které se hodí znát: _visible [true/false], _xscale [%], _yscale [%], _y [px(?)], _x [px], _rotation [stupně], _width [px], _height [px], _alpha [%]. Tyto atributy jsou public a lze je číst i měnit.

    Kromě toho má třída MC i praktické metody. Například: attachMovie(), createEmptyMovieClip() pro vytváření nových instancí MC.

    A pak také některé události. Například onEnterFrame(), který se volá vždy, když je třeba vygenerovat nový snímek animace.

    Více informací najdete zde: http://flash-reference.icod.de/MovieClip.html

    Otázka je, proč vše nenapsat jen v Actionscriptu bez pomoci nějaké kostry? Asi by to mělo jít, i když nevím jak bych importoval například svg, ale hlavně takto importované objekty nejsou zabaleny do výsledného swf. Jsou importovány dynamicky.

    Další vlastnosti si budete muset nastudovat sami, nebo budou popsány v ukázkovém projektu.

    Překlad

    MTASC očekává jeden či více vstupních souborů typu .as a jeden výstupní. Vstupním souborům nepředchází žádný parametr, zatímco výstupním předchází parametr -swf nebo -out. Parametr -swf funguje pravděpodobně takto: pokud soubor za swf existuje, pak ho mtasc vezme updatuje třídy pomocí AS a pak ho opět uloží – čili soubor za parametrem -swf změní. Parametr -out vygeneruje pouze nový soubor. Pokud použijete -swf i -out zároveň, potom se vezme soubor za parametrem -swf, obohatí se o AS a výsledek se uloží do souboru za parametrem -out.

    Pokud se bojíte, že vám MTASC zahodí některé třídy, potom použijte parametr -keep. MTASC pravděpodobně zahazuje ty třídy, které jsou nepoužití (unsed) (?).

    MTASC umožňuje navíc skočit do statické funkce main() pomocí parametru -main. Pokud nespustíte nějakou metodu z xml kostry (pomocí tagu <call>), potom musíte parametr -main použít (jinak se AS nijak neaktivuje (?)).

    mtasc -swf kostra.swf -keep -main skript.as -out kostraSeSkriptem.swf

    Příkaz výše předpokládá, že existuje soubor kostra.swf, který vezme, přidá k němu skript, přitom existující objekty ponechá netknuté a výsledek uloží do nového souboru kostraSeSkriptem.swf. Nakonec přidá kód pro automatické spuštění statické metody main().

    Poslední zajímavá věc je hlavička. Parametr -header. Má smysl ho použít ve chvíli, kdy pomocí AS generujete zcela nový soubor bez pomoci jakékoli kostry (?). Definuje šířku:výšku:framerate

    Kombinace výstupů z mtasc a swfmill

    Z návodu výše jste asi pochopili jak věci fungují. Přesto se pokusím princip popsat detailněji. Existují dvě principiálně odlišné metody:

    1. takzvané skeletální vstřikování (skeletal injection),
    2. takzvaná metody přirozeného vstupního bodu (natural entry poin).

    Něco o nich se dozvíte zde: http://aralbalkan.com/408

    Druhou metodu jsem příliš nezkoušel, a to z toho důvodu, že výsledek je složen z více swf souborů (?). Mým cílem bylo udělat co nejjednodušší swf banner – jeden soubor pro takové potřeby je ideální.

    K druhé metodě bych zmínil asi jen to, že celá aplikace je zděděná z třídy MovieClip a v kostře vložena s nulovými rozměry někam do scény. Její kód se začne vykonávat metodou onLoad() - nahrazuje vlastně statickou metodu main(). Velmi podobně (?) by se asi dalo využít tagu <call>, který z kostry zavolá jednu z metod, kterou jako autoři považujete za vstupní metodu. Vstupní metody a funkce vlastně nedělají nic jiného, než že definují počáteční parametry, sestaví některé dynamicky vkládané objekty a to je vše. Zbytek dění by měl být řízen událostmi.

    A nyní k metodě první. Podle některých zdrojů jí používá většina klikacích opensource GUI určených pro generování Flash animací. Využívá tu schopnost mtasc, že dokáže Actionsrcriptem obohatit, již existující swf. Takže nejprve spustíte swfmill a potom mtasc na výsledný soubor:

    swfmill simple kostra.xml kostra.swf
    mtasc -swf kostra.swf -keep -main skript.as -out kostraSeSkriptem.swf

    Většinou jsem používal právě takovou kombinaci příkazů.

    Ukázkový projekt

    A nyní se podíváme na konkrétní příklad od začátku do konce. Nic složitého, jen ukázka. Začneme kreslením v Inkscapu.

    Grafika

    Nakreslíme obrázek jako na následujícím screenshotu:

    inkscape - výsledek

    Rozměr obrázku je 728x90. Jak kruh, tak text převedeme do křivek (shift + ctrl + C) – import svg není ještě úplně dokonalý a křivky jsou tak trochu jistota. Následně přiřadíme svg elementům id (to se bude hodit při vkládání konkrétních části svg obrázku). Pravé kliknutí na objekt:

    inkscape - kontextové menu

    Vybereme položku Vlastnosti Objektu. Jako ID nastavíme u textu: text a u kruhu: kruh.

    Pak grafiku uložíme do nějakého pracovního adresáře: ~/prac/grafika.svg.

    Můžeme si dovolit objekty seskupovat a dávat jim unikátní ID. Pomocí swfmill můžeme importovat i složité vektory včetně barev a průhledností, ale co ještě nefunguje jsou blur efekty a hlavně barevné přechody. Chybějící barevné přechody jsou asi největším problémem konverze svg do swf. Snad se to časem zlepší (?).

    To je vše co se grafiky týká.

    Kostra

    Nyní vytvoříme xml kostru. Vytvoříme textový soubor ~/prac/kostra.xml a uložíme do něj následující kód:

    
    <?xml version="1.0" encoding="utf-8" ?>
    <!--Celá animace s rozměry a snímkovací frekvencí-->
    <movie width="728" height="90" framerate="30">
    	<!--Barva pozadí-->
    	<background color="#ffffff" />
    <!--Začátek snímku-->
    <frame>
    	<!--Začátek knihovny-->
    	<library>
    		<!--Importujeme pouze grafiku v svg formátu-->
    		<clip id="grafika" import="grafika.svg" />
    	</library>
    	<!--Z svg souboru vložíme objekt s id=text
    	      a přitom nezměníme polohu hloubka 
    	      vložení bude 0 protože jde o pozadí scény-->
    	<place id="text" name="text_0" depth="0" />
    	<!--Dále vložíme kruh a nazveme ho kruh_0,
    		 tento název bude zpřístupňovat objekt v AS-->
    	<place id="kruh" name="kruh_0" x="10" y="0" depth="1" />
    	<!--Opět vložíme stejný kruh tentokrát s názevm kruh_1-->
    	<place id="kruh" name="kruh_1" x="230" y="0" depth="2" />
    <!--Konec snímku-->
    </frame>
    <!--Konec animace-->
    </movie>
    
    

    Skript

    Pak vytvoříme textový soubor: ~/prac/skript.as a obsahem:

    
    // název třídy se skripetm: v tuto chvíli
    // je irelevantní - dulezita je metoda main()
    class Main
    {
    	// název vstupní metody - tuto metodu hledá mtasc,
    	// když má nastaven parametr -main, musí jít o statickou metodu
    	static function main()
    	{
    		// objekty definované v kostře jsou instancemi třídy
    		// MovieClip a jsou přístupné přes proměnnou _root.
    		// můžeme jim přidat některé atributy,
    		// které budeme později potřebovat
    		_root["kruh_0"].v = 6;		// počáteční rychlost (v ixové souřadnici)
    		_root["kruh_0"].m = 0.5;	// hmotnost
    		_root["kruh_0"].r = 40;		// poloměr
     
    		_root["kruh_1"].v = -1;
    		_root["kruh_1"].m = 5;
    		_root["kruh_1"].r = 40;
     
    		// nyní vytvoříme pomocnou instanci třídy MovieClip
    		// tato instance bude řídit animaci
    		// a kromě toho je použita k vytvoření průhledného
    		// klikacího tlačítka nad celým Flashem
    		var ctrl:MovieClip = _root.createEmptyMovieClip(
    					"controller",
    					_root.getNextHighestDepth());
     
    		// začíná se kreslit klikací tlačítko
    		ctrl.beginFill(0xFFFFFF);
    		ctrl.moveTo(0, 0);
    		ctrl.lineTo(Stage.width, 0);
    		ctrl.lineTo(Stage.width, Stage.height);
    		ctrl.lineTo(0, Stage.height);
    		ctrl.lineTo(0, 0);
    		ctrl.endFill();
    		ctrl._alpha = 0;			// plná průhlednost
     
    		// definujeme reakci na událost uvolnění tlačitka myši
    		ctrl.onRelease = function() {
    			// přepneme na požadovanou stránku
    			getURL("banner.html", "_self");
    		}
     
    		// definujeme skript, který bude vyvolán
    		// při události generování nového snímku
    		ctrl.onEnterFrame = function() {
    			// zjednodušíme si život pomocnou proměnnou
    			// pro více objektů by se hodilo pole
    			var obj1 = _root["kruh_0"];
    			var obj2 = _root["kruh_1"];
     
    			// ---- TADY UŽ ZAČÍNÁ SAMOTNÁ ANIMACE ----
    			// pro ukázku je zvolena jednoduchá fyzika srážek
     
    			// nx je pomocná ixová souřadnice
    			// jde o souřadnici na kterou se objekt přesune,
    			// pokud do ničeho nenarazí
    			obj1.nx = obj1._x + obj1.v;
    			obj2.nx = obj2._x + obj2.v;
     
    			// pomocná proměnná ukazující zda došlo ke kolizi či nikoli
    			obj1.collision = false;
    			obj2.collision = false;
     
    			// kontrola krajních mantinelů
    			if (obj1.nx < 0) || (obj1.nx > Stage.width - 2*obj1.r) {
    				obj1.v *= -1;
    				obj1.collision = true;
    			}
    			if (obj2.nx < 0) || (obj2.nx > Stage.width - 2*obj2.r) {
    				obj2.v *= -1;
    				obj2.collision = true;
    			}
     
    			// kontrola kolize mezi objekty
    			if Math.abs(obj1.nx - obj2.nx) < (obj1.r + obj2.r) {
    				var u1 = obj1.v;
    				var u2 = obj2.v;
     
    				// výpočet výsledné rychlosti - uvažuje i různé hmotnosti
    				obj1.v = (u1*(obj1.m - obj2.m) + 2*obj2.m*u2) / (obj1.m + obj2.m)
    				obj2.v = (u2*(obj2.m - obj1.m) + 2*obj1.m*u1) / (obj1.m + obj2.m)
    				obj1.collision = true;
    				obj2.collision = true;
    			}
     
    			// pokud nedošlo ke kolizi, potom objekt skutečně přesuň
    			// v opačném případě objekt nepřesouvej.
    			// když se toto neudělá, mohl by objekt vyletět ze scény
    			if !(obj1.collision) obj1._x = obj1.nx;
    			if !(obj2.collision) obj2._x = obj2.nx;
     
    			// hrátky s průhledností - po nárazu sniž průhlednost na 10%
    			if (obj1.collision) obj1._alpha = 10;
    			if (obj2.collision) obj2._alpha = 10;
     
    			// pokud není průhlednost 100%, pomalu ji zvyšuj
    			if (obj1._alpha < 100) obj1._alpha += 5;
    			if (obj2._alpha < 100) obj2._alpha += 5;
    		}
    	}
     
    }
    
    

    Nyní už jen celý výsledek přeložíme:

    swfmill simple kostra.xml kostra.swf
    mtasc -swf kostra.swf -main skript.as -out vysledek.swf

    A podíváme se na vysledek.swf – Mělo by to fungovat. Celé se to nyní sbalilo do jednoho souboru o velikosti 2,8kB.

    Závěr

    Na závěr bych uvedl jen tolik, že už mi Flash není tak nesympatický a že jsou nástroje jak si ho přizpůsobit obrazu svému.

    Hlavní problémy:

    Menší problémy:

    Nějaké ty výhody:

    Projekt ke stažení: ukazka.zip

           

    Hodnocení: 100 %

            špatnédobré        

    Obrázky

    Animované Flash bannery pomocí Inkscape, swfmill a mtasc..., obrázek 1 Animované Flash bannery pomocí Inkscape, swfmill a mtasc..., obrázek 2

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Max avatar 5.4.2009 15:34 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Animované Flash bannery pomocí Inkscape, swfmill a mtasc...
    Proč jsi to neposlal redakci, aby to vydali jako článek? Není to škoda?
    Zdar Max
    Měl jsem sen ... :(
    5.4.2009 15:50 snajpa | skóre: 20 | blog: snajpuv_blocek | Brno
    Rozbalit Rozbalit vše Re: Animované Flash bannery pomocí Inkscape, swfmill a mtasc...
    Přesně, kolikrát jinde vycházejí totální kraviny, a i za jejich vypocení dostane autor (aspoň symbolickou) odměnu. A tohle je hodně pěkně zpracovaný. I když je pravda, když píšeš do blogu, nikdo ti nemůže kecat do stylu a do toho, co napsat/nenapsat.
    --- vpsFree.cz --- Virtuální servery svobodně
    Adrin avatar 5.4.2009 16:18 Adrin | skóre: 13 | blog: kosmopako
    Rozbalit Rozbalit vše Re: Animované Flash bannery pomocí Inkscape, swfmill a mtasc...

    Zvažoval jsem to, ale mohl jsem tam nasekat faktické chyby. Zas tak moc do problému ještě nevidím. :)

    6.4.2009 23:57 Robert Krátký | skóre: 94 | blog: Robertův bloček
    Rozbalit Rozbalit vše Re: Animované Flash bannery pomocí Inkscape, swfmill a mtasc...
    Rád bych takový článek vydal.
    5.4.2009 18:18 Kvakor
    Rozbalit Rozbalit vše Re: Animované Flash bannery pomocí Inkscape, swfmill a mtasc...
    Zajímavé řešení - já jsem se studoval použití knihovny Ming na generování Flashe (pro zobrasení programem generovaného videa), ale tohle má tu výhodu, že se dá použít hotový vektorový výstup - přes Ming se musí kreslit "ručně" pomocí příkazů typu SWFShape_draw<něco> a podobně.

    BTW: Osbně bych termín injection v případě programového kódu raději překládal jako vložení nebo zavedení, vstřikování bych ponechal pro případy, kdy se opravdu jedná o tekutiny :-)
    Adrin avatar 5.4.2009 20:07 Adrin | skóre: 13 | blog: kosmopako
    Rozbalit Rozbalit vše Re: Animované Flash bannery pomocí Inkscape, swfmill a mtasc...

    Ming jsem nějak přehlédl. Ale podívam se na něj. Díky.

    MMCHDM: Aspoň je termín vstřikování, zábavný :)

    5.4.2009 20:48 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Flash™

    Výborný článek.

    Jen si rýpnu do Adobe, že od té doby, co uvolnili specifikaci formátu i pro tvorbu přehrávačů, tak naopak zakázali používat slovo „Flash“. Udělali si z toho obchodní známku, takže open source nástroje jej všude nahrazují zkratkou SWF.

    Vašek Lorenc avatar 5.4.2009 22:02 Vašek Lorenc | skóre: 27
    Rozbalit Rozbalit vše Re: Animované Flash bannery pomocí Inkscape, swfmill a mtasc...

    Skvělý příspěvek, taky bych to rád viděl jako článek.. nebo jako sérii. Zrovna nedávno jsem přemýšlel, v čem dělat vektorovou 2D animaci.. V Blenderu by to určitě šlo taky, ale mi na to seděl víc.. Nakonec to nedopadlo vůbec, zvolili jsme stop-motion, ale s touhle znalostí to možná příště zkusíme!

    Škoda, že na jednoduchou vektorovou animaci pořád nic není.. a přitom knihovny jako Clutter už umí spoustu šikovných věcí.

    ...včetně majestátného loosa
    6.4.2009 11:13 Tomáš Pelc | skóre: 22 | blog: multimedialni_pc_k_LCD_TV
    Rozbalit Rozbalit vše Re: Animované Flash bannery pomocí Inkscape, swfmill a mtasc...

    A Synfig http://www.synfig.com jsi nezkoušel?

     

    Vašek Lorenc avatar 6.4.2009 18:09 Vašek Lorenc | skóre: 27
    Rozbalit Rozbalit vše Re: Animované Flash bannery pomocí Inkscape, swfmill a mtasc...

    Úplně jsem na něj zapomněl.. :( Ale zkusím aktuální verzi, díky za nakopnutí. Taky jsem našel docela zajímavý projekt, kinetic typography.

    ...včetně majestátného loosa

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.