abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 01:11 | Nová verze

Wayfire, kompozitní správce oken inspirovaný Compizem běžící nad Waylandem, byl vydán ve verzi 0.5.0. Zdrojové kódy jsou k dispozici na GitHubu. Videoukázky na YouTube.

Ladislav Hagara | Komentářů: 0
včera 12:22 | Komunita

Neziskové technologické konsorcium Linux Foundation rozšířilo seznam svých oficiálních projektů. Nejnovějším projektem je Open Source Security Foundation (OpenSSF), jehož cílem je zvýšit bezpečnost open source softwaru. Více například v příspěvcích na blozích GitHubu nebo Microsoftu.

Ladislav Hagara | Komentářů: 0
včera 11:44 | Nová verze

Byla vydána verze 3.1 webového aplikačního frameworku napsaného v Pythonu Django (Wikipedie). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
včera 01:11 | Nová verze

Svobodná federalizovaná sociální síť Mastodon byla aktualizována. Vydání 3.2 mj. přepracovává audio přehrávač, zlepšuje zabezpečení přihlášení aj.

Fluttershy, yay! | Komentářů: 0
3.8. 14:00 | Komunita

Byla vydána verze 1.5.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace. Na YouTube jsou ke zhlédnutí záznamy přednášek z konference JuliaCon 2020 konané online minulý týden.

Ladislav Hagara | Komentářů: 0
3.8. 13:33 | IT novinky

Sdružení CZ.NIC informuje, že pro domény s koncovkou .CZ, jejichž platnost nebyla včas prodloužena, platí opět ochranná lhůta 60 dnů (30 dnů je doména plně funkční, 30 dnů je vyřazena z DNS – není dostupná). Po více než čtyřech měsících tak končí zvláštní režim, kdy byla funkčnost nezaplacených domén dočasně prodloužena ze 30 na 60 dnů z důvodu mimořádné situace související s onemocněním COVID-19.

Ladislav Hagara | Komentářů: 21
3.8. 09:00 | Nová verze

Byla vydána nová verze linuxové distribuce BunsenLabs Linux s předkonfigurovaným správcem oken Openbox. Její název je Lithium a založena je na Debianu 10 Buster. Přehled novinek v poznámkách k vydání. BunsenLabs Linux je nástupcem dnes již nevyvíjené linuxové distribuce CrunchBang (zkráceně #!).

Ladislav Hagara | Komentářů: 0
3.8. 08:00 | Nová verze

Po 9 týdnech vývoje od vydání Linuxu 5.7 oznámil Linus Torvalds vydání Linuxu 5.8 (LKML). Přehled nových vlastností a vylepšení na stránce Linux Kernel Newbies.

Ladislav Hagara | Komentářů: 1
3.8. 07:00 | Komunita

Omar Roth, hlavní vývojář Invidious, alternativního webového frontendu k YouTube, oznámil, že kvůli přehlcení a nedostatku motivace projekt opouští a zřejmě skončí také oficiální instance invidio.us (k 1. září, resp. API k 1. říjnu); stále poběží další instance nebo je možné nasadit vlastní.

Fluttershy, yay! | Komentářů: 0
2.8. 14:22 | Zajímavý projekt

Byly vyhlášeny výsledky soutěže JS1024 2020 aneb zajímavé programy napsané v JavaScriptu o velikosti maximálně 1 024 bajtů. Více o vítězném pianu na stránkách autora.

Ladislav Hagara | Komentářů: 0
Dokážete si představit, že by váš hlavní počítač (desktop, notebook) byl v současné době založen na architektuře jiné než x86 (x86_64)? Například ARM, POWER, RISC-V,…
 (10%)
 (9%)
 (57%)
 (16%)
 (7%)
Celkem 128 hlasů
 Komentářů: 10, poslední dnes 01:29
Rozcestník

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

5.4.2009 15:25 | Přečteno: 4294× | 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: 68 | 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.