home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 November / PCWorld_2004-11_cd.bin / novinky / Interval / clanek03.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-10-02  |  35.9 KB  |  432 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='-1' />
  10. <meta name='robots' content='index,follow' />
  11. <meta name='googlebot' content='index,follow,snippet,noarchive' />
  12. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  13. <meta name='keywords' content='Interval' />
  14. <meta name='ICBM' content='49.1915, 16.626' />
  15. <meta name='DC.Title' content='Interval.cz' />
  16. <meta name='DC.Identifier' content='http://interval.cz' />
  17. <meta name='DC.Language' content='cs' />
  18. <meta http-equiv='pics-label' content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline EN v2.0" l gen true for "http://interval.cz" r (nz 1 vz 1 lz 1 oz 1 cz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://interval.cz" r (n 0 s 0 v 0 l 0))' />
  19. <meta http-equiv='imagetoolbar' content='no' />
  20. <meta http-equiv='MSThemeCompatible' content='no' />
  21. <meta name='MSSmartTagsPreventParsing' content='true' />
  22. <link rel='shortcut icon' type='image/x-icon' href='favicon.ico' />
  23. <link rel='alternate' type='application/rss+xml' title='RSS Interval.cz' href='http://interval.cz/__rss/rss.asp' />
  24. <link rel='home' href='http://interval.cz' />
  25. <link rel='search' href='http://interval.cz/search_ex.asp' />
  26. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/html4.css' />
  27. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/basic_all.css' />
  28. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/homepage_all.css' />
  29. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/articles_all.css' />
  30. <link rel='stylesheet' type='text/css' media='print' href='__services/styles/articles_print.css' />
  31. <title>Interval.cz - webdesign a e-komerce denn∞</title>
  32. </head>
  33. <body class='interval interval-articles'>
  34. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  35. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  36. <div id='page-body'><div id='page-left'><div id='article'>
  37.  
  38.  
  39. <h2>Kurz SVG - nenφ to Flash a p°ece se toΦφ!</h2>
  40. <p id='prepend'>Deklarativnφ animace umo₧≥ujφ velmi snadnΘ animovßnφ grafick²ch objekt∙ bez pou₧itφ skript∙. Tento zp∙sob se oznaΦuje jako "time-based" - m∙₧ete definovat p°esn∞ naΦasovanou zm∞nu vpodstat∞ jakΘhokoli parametru grafiky, poΦφnaje rozm∞ry, polohou a pr∙hlednostφ a₧ t°eba po zm∞nu transformaΦnφch atribut∙. To je hlavnφ rozdφl oproti SWF formßtu, kde se Φasovßnφ animacφ v₧dy odvφjφ od jednotliv²ch klφΦov²ch snφmk∙ - anglicky "frame-based". DalÜφ d∙le₧it² rozdφl je v tom, ₧e jednotlivΘ deklarativnφ animace mohou b²t na sob∞ zcela nezßvislΘ a mφt jinou dobu trvßnφ nebo poΦet opakovßnφ a podobn∞.</p>
  41.  
  42. <p>Deklarativnφ p°φstup mß takΘ velkou v²hodu ve snadnΘm, p°esn∞ definovanΘm p°enosu animacφ nap°φΦ cel²m spektrem softwarov²ch aplikacφ. AnimaΦnφ prvky SVG byly vyvinuty ve spoluprßci s pracovnφ skupinou <a href='http://www.w3.org/AudioVideo/'>W3C Synchronized Multimedia</a> (SYMM), kterß vytvo°ila specifikaci Synchronized Multimedia Integration Language 1.0. Technologie <a href='http://interval.cz/serial.asp?serial=75' title='Interval.cz: Synchronized Multimedia Integration Language'>SMIL</a> mß p°itom u₧ dnes pom∞rn∞ silnou podporu v p°ehrßvaΦφch jako QuickTime nebo RealPlayer.</p>
  43.  
  44. <h3>Odkazy v SVG</h3>
  45. <p>JeÜt∞ ne₧ se pono°φme do animacφ, povφme si n∞co mßlo o tom, jak v SVG vytvß°et odkazy. Ty jsou toti₧ zßkladem interaktivity. Obdoba hyperlinku znßmΘho z klasickΘho HTML vypadß takto:</p>
  46.  
  47. <div class='sample'>
  48. <a xlink:href="http://www.w3.org">
  49. <br />  <ellipse cx="2.5" cy="1.5" rx="2" ry="1"
  50. <br />           fill="red" />
  51. <br /></a>
  52. </div>
  53.  
  54. <p>VÜechny grafickΘ objekty uvnit° elementu hyperlinku jsou aktivnφ - reagujφ jako odkaz. V uvedenΘm p°φkladu je to Φervenß elipsa.</p>
  55. <p>DalÜφmi mo₧n²mi atributy jsou <code>xlink:title</code> pro pojmenovßnφ odkazu a <code>target</code> pro jmΘno rßmu ve kterΘm se mß otev°φt cφlov² dokument.</p>
  56. <p>SVG mß ve slovnφku i analogii odkazu na konkrΘtnφ prvek ve strßnce. Jeliko₧ se v p°φpad∞ SVG jednß o grafick² objekt - obrßzek, je d∙le₧itΘ mφt mo₧nost adresovat konkrΘtnφ v²°ez kresby, jinak °eΦeno pohled, anglicky "view". V zßsad∞ jsou k dispozici dv∞ mo₧nosti:</p>
  57.  
  58. <div class='list'>
  59. <ol>
  60. <li>kresba.svg#svgView(viewBox(0,200,1000,1000)) - p°esn²m Φφseln²m definovßnφm v²°ezu grafiky</li>
  61. <li>kresba.svg#nejaky_pohled - odkazem na specißlnφ prvek <code>view</code> obsahujφcφ p°eddefinovan² pohled na grafick² dokument</li>
  62. </ol>
  63. </div>
  64.  
  65. <h4>Element <code>view</code></h4>
  66. <p>P°ehled atribut∙ elementu:</p>
  67.  
  68. <div class='list'>
  69. <ul>
  70. <li><em>viewTarget</em> = (jmΘno_objektu) - (nepovinn²) pokud zadßme identifikßtor objektu, p°i°azenΘho ke konkrΘtnφmu pohledu, prohlφ₧eΦ by jej m∞l po aktivaci hyperlinku zv²raznit</li>
  71. <li><em>viewBox</em> = (x y Üφ°ka v²Üka) - atribut umo₧nφ definovat virtußlnφ okno, kter²m se u₧ivatel po aktivaci hyperlinku bude na dokument dφvat: x, y nastavφ lev² hornφ roh; Üφ°ka a v²Üka pak urΦujφ rozsah virtußlnφho pohledu</li>
  72. <li><em>preserveAspectRatio</em> = (typ_p°izp∙sobenφ_rozm∞r∙) - pou₧itφm "viewBox" m∙₧e dojφt i k neproporcionßlnφ deformaci pohledu, proto mßte k dispozici tento parametr, kter²m m∙₧ete nastavit chovßnφ prohlφ₧eΦe: "none" umo₧nφ deformaci sou°adnic a hodnota, nap°φklad "xMidYMid", p°izp∙sobφ grafiku proporcionßln∞ do pohledovΘho okna a navφc ji vycentruje v obou sm∞rech (toto je v²chozφ hodnota).</li>
  73. <li><em>zoomAndPan</em> - nastavenφm na hodnotu "disable" mohou prvky <code>view</code> (taktΘ₧ vÜechny vn∞jÜφ prvky <code>svg</code>) zakßzat u₧ivateli manußln∞ m∞nit pohled a zv∞tÜenφ v prohlφ₧eΦi SVG (v²chozφ je "magnify" - vÜe povoleno)</li>
  74. </ul>
  75. </div>
  76.  
  77. <h3>Animace</h3>
  78. <p>KlφΦovΘ pro pochopenφ je slovφΦko <strong>deklarativnφ</strong> - to znamenß, ₧e tv∙rce animace p°esn∞ definuje (deklaruje), ₧e dan² atribut konkrΘtnφho objektu bude animovßn (Φili jeho hodnota se bude m∞nit) v definovanΘm rozmezφ hodnot v konkrΘtnφm Φase od-do. SVG norma mß obrovskou Ükßlu mo₧nostφ, jak to ud∞lat. Velmi flexibilnφ je i urΦovßnφ Φasu - animace mohou b²t nap°φklad startovßny n∞jakou udßlostφ u₧ivatelskΘho rozhranφ (t°eba "onmouseover") nebo navßzßny na pr∙b∞h n∞jakΘ jinΘ SVG animace. Mo₧nostφ je tolik, ₧e vystaΦφ na n∞kolik Φlßnk∙.</p>
  79.  
  80. <h4>Vztah SVG v∙Φi SMIL</h4>
  81. <p>SVG je jazyk odvozen² od W3C normy SMIL ("host language" v terminologii SMIL) a jako takov² tedy obsahuje animaΦnφ prvky v nφ definovanΘ - krom∞ nich ale byly definovßny i n∞kterΘ dalÜφ, aby se dosßhlo pokrytφ celΘ oblasti 2D grafiky.</p>
  82. <p>Prvky definovanΘ ve specifikaci SMIL:</p>
  83.  
  84. <div class='list'>
  85. <ul>
  86. <li><em>animate</em> - m∞nφ hodnoty skalßrnφch atribut∙ v Φase</li>
  87. <li><em>set</em> - zjednoduÜenφ prvku <code>animate</code> pou₧φvanΘ pro zm∞nu (animovßnφ) neΦφseln²ch atribut∙ typu <code>visibility</code></li>
  88. <li><em>animateMotion</em> - pohybuje s prvkem podΘl zvolenΘ animaΦnφ k°ivky urΦujφcφ drßhu pohybu</li>
  89. <li><em>animateColor</em> - pro zm∞nu barevn²ch hodnot</li>
  90. </ul>
  91. </div>
  92.  
  93. <p>Prvky vztahujφcφ se specißln∞ k SVG animacφm</p>
  94.  
  95. <div class='list'>
  96. <ul>
  97. <li><em>animateTransform</em> - animuje transformaΦnφ atributy, velmi siln² nßstroj - jeliko₧ je mo₧nΘ jednotlivΘ typy animacφ kombinovat, lze pohodln∞ vytvo°it libovolnΘ pohybovΘ efekty</li>
  98. <li><em>mpath</em> element - vektorovß cesta, kterou lze umφstit do prvku <code>animateMotion</code> a definovat tak p°esn∞ drßhu pohybu</li>
  99. <li><em>keyPoints</em> - tento attribut je dalÜφm rozÜφ°enφm elementu <code>animateMotion</code> a umo₧≥uje °φdit zrychlenφ, nejΦast∞jÜφ pou₧itφ je evidentnφ - vytvo°enφ p°irozen²ch pohybov²ch efekt∙</li>
  100. <li><em>rotate</em> - dalÜφ atribut pro prvek <code>animateMotion</code>, kter² °φdφ sm∞r natoΦenφ animovanΘho objektu (nap°φklad dφvßme-li se shora na auto pohybujφcφ se po k°ivce, jeho ÜpiΦka by se samoz°ejm∞ m∞la stßle natßΦet ve sm∞ru jφzdy)</li>
  101. </ul>
  102. </div>
  103.  
  104. <h4>Animace prakticky</h4>
  105. <p>Abychom stßle jen neteoretizovali, vyzkouÜφme si nynφ mal² <a href='podklady/hejral/963/092-anim-demo.svg'>p°φklad</a>, ve kterΘm jsou animovßny jednotlivΘ atributy "width", "x" a "fill" obdΘlnφk∙:</p>
  106.  
  107. <div class='sample'>
  108. <?xml version="1.0" encoding="UTF-8"?>
  109. <br /><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN"
  110. <br /> "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
  111. <br /><svg version="1.1" baseProfile="tiny"
  112. <br />     xmlns="http://www.w3.org/2000/svg"
  113. <br />     xmlns:xlink="http://www.w3.org/1999/xlink"
  114. <br />     width="320px" viewBox="0 0 480 360">
  115. <br /><title>9.2 Animace</title>
  116. <br /><desc>Testuje zakladni animacni prvek 'animate'</desc>
  117. <br /><g font-family="Helvetica" font-size="24">
  118. <br />  <!-- vykresleni souradnic s popisem casu -->
  119. <br />  <line x1="190" x2="190" y1="45" y2="300"
  120. <br />        stroke="black" stroke-width="4"/>
  121. <br />  <line x1="460" x2="460" y1="45" y2="300"
  122. <br />        stroke="black" stroke-width="4"/>
  123. <br />  <text x="156" y="32">0-2 sec.</text>
  124. <br />  <text x="380" y="32">-&gt;5 sec.</text>
  125. <br />  <!-- 4 nasledujici animace funguji i v KSVG 3.2 -->
  126. <br />  <!-- a ukazuji ze pro stejny efext lze vyuzit   -->
  127. <br />  <!-- ruznorode zpusoby nastaveni meznich hodnot.-->
  128. <br />  <g>
  129. <br />  <rect x="160" y="60" width="30" height="30"
  130. <br />        fill="#FFAA44" stroke="red" stroke-width="4">
  131. <br />  <animate attributeName="width" from="30" to="300"
  132. <br />           begin="2s" dur="3s" fill="freeze"/>
  133. <br />  </rect>
  134. <br />  <text x="20" y="85" fill="red">from-&gt;to</text>
  135. <br />  </g>
  136. <br />  <g>
  137. <br />  <rect x="160" y="100" width="30" height="30"
  138. <br />        fill="#FFAA44" stroke="red" stroke-width="4">
  139. <br />  <animate attributeName="width" from="30" by="270"
  140. <br />           begin="2s" dur="3s" fill="freeze"/>
  141. <br />  </rect>
  142. <br />  <text x="20" y="125" fill="red">from-&gt;by</text>
  143. <br />  </g>
  144. <br />  <g>
  145. <br />  <rect x="160" y="140" width="30" height="30"
  146. <br />        fill="#FFAA44" stroke="red" stroke-width="4">
  147. <br />  <animate attributeName="width" by="270"
  148. <br />           begin="2s" dur="3s" fill="freeze"/>
  149. <br />  </rect>
  150. <br />  <text x="20" y="165" fill="red">-&gt;by</text>
  151. <br />  </g>
  152. <br />  <g>
  153. <br />  <rect x="160" y="180" width="30" height="30"
  154. <br />       fill="#FFAA44" stroke="red" stroke-width="4">
  155. <br />  <animate attributeName="width" to="300"
  156. <br />          begin="2s" dur="3s" fill="freeze"/>
  157. <br />  </rect>
  158. <br />  <text x="20" y="205" fill="red">-&gt;to</text>
  159. <br />  </g>
  160. <br />  <g>
  161. <br />  <rect x="160" y="220" width="30" height="30"
  162. <br />       fill="#FFAA44" stroke="red" stroke-width="4">
  163. <br />  <!-- 'additive="sum"' je IGNOROVAN v KSVG 3.2 -->
  164. <br />  <animate attributeName="x" from="0" to="270"
  165. <br />          begin="2s" dur="3s" fill="freeze" additive="sum"/>
  166. <br />  </rect>
  167. <br />  <text x="20" y="245" fill="red">anim. 'x'</text>
  168. <br />  </g>
  169. <br />  <g>
  170. <br />  <rect x="160" y="260" width="300" height="30"
  171. <br />        fill="#FFAA44" stroke="red" stroke-width="4">
  172. <br />  <!-- toto nefunguje vubec v KSVG 3.2 -->
  173. <br />  <animate attributeName="fill" from="#FFAA44" to="#00AA44"
  174. <br />           begin="2s" dur="3s" fill="freeze"/>
  175. <br />  </rect>
  176. <br />  <text x="20" y="285" fill="red">anim. 'fill'</text>
  177. <br />  </g>
  178. <br /></g>
  179. <br /><!-- obrys platna -->
  180. <br /><rect x="1" y="1" width="478" height="358"
  181. <br />      fill="none" stroke-width="2" stroke="blue"/>
  182. <br /></svg>
  183. </div>
  184.  
  185. <p>Na tomto mφst∞ musφm odboΦit a ud∞lat praktickou poznßmku t²kajφcφ se prohlφ₧eΦ∙. Bohu₧el zatφm stßle platφ, nepoΦφtßm-li komerΦnφ p°ehrßvaΦe pro mobilnφ za°φzenφ, ₧e v∞tÜina animacφ je zcela sprßvn∞ interpretovßna pouze v programu <a href='http://www.adobe.com/svg/'>Adobe SVG Viewer 3</a> (ASV3). Pom∞rn∞ slibn²m v²vojem prochßzφ v poslednφ dob∞ prohlφ₧eΦ <a href='http://svg.kde.org'>KSVG</a>, integrovan² v unixovΘm grafickΘm prost°edφ KDE od verze 3.2. Nap°φklad p°edchozφ ukßzku je mo₧nΘ animovat i v KSVG (viz komentß°e v SVG k≤du), ale u dalÜφch ji₧ budete v∞tÜinou pot°ebovat ASV3.</p>
  186.  
  187. <h3>Zßkladnφ struktura zßpisu animaΦnφch prvk∙ - atributy</h3>
  188. <p>V tΘto Φßsti si probereme ty atributy, kterΘ naleznou vyu₧itφ ve v∞tÜin∞ animaΦnφch prvk∙.</p>
  189.  
  190. <h4>Odkaz na animovan² element</h4>
  191. <p>Atribut "xlink:href" obsahuje URI odkazujφcφ na cφlov² element, jen₧ musφ b²t v aktußlnφm SVG fragmentu, aby byla zaruΦena jeho dostupnost. URI musφ ukazovat na <em>p°esn∞ jeden</em> element. Toto URI lze dokonce vynechat - animovßn pak bude <em>rodiΦovsk² prvek</em> p°φmo nad°azen² danΘmu objektu <code>animate</code>.</p>
  192.  
  193. <h4>UrΦenφ animovanΘho atributu</h4>
  194. <p>Atribut "attributeName" - zde urΦφte atribut, kter² byste cht∞li v animaci m∞nit - pro animaci pohybu to m∙₧e b²t t°eba "x".</p>
  195. <p>Atribut "attributeType" - mo₧nΘ hodnoty: "CSS", "XML", "auto". UrΦenφ jmennΘho prostoru XML ve kterΘm je definovßn cφlov² atribut. V²chozφ hodnota je "auto" a v naprostΘ v∞tÜin∞ p°φpad∙ nebude v∙bec nutnΘ se tφmto parametrem zab²vat.</p>
  196.  
  197. <h4>UrΦenφ rozsahu hodnot</h4>
  198. <p>Nßsledujφcφ t°i atributy umo₧≥ujφ nastavit rozmezφ, ve kterΘm se v pr∙b∞hu animovßnφ budou hodnoty m∞nit. (V prvku <code>set</code> se uplatnφ jen posledn∞ jmenovan².)</p>
  199.  
  200. <div class='list'>
  201. <ul>
  202. <li><em>from</em> - poΦßteΦnφ hodnota animovanΘho atributu.</li>
  203. <li><em>by</em> - zm∞na hodnoty v∙Φi poΦßteΦnφmu stavu. Pokud nastavφme "by", nebudeme u₧ nastavovat koneΦnou hodnotu "to" a naopak - je-li urΦena absolutnφ koneΦnß hodnota, nebudeme nastavovat "by".</li>
  204. <li><em>to</em> - koneΦnß hodnota animace.</li>
  205. </ul>
  206. </div>
  207.  
  208. <h4>Zachovßnφ v²sledku animace</h4>
  209. <p>Atributem "fill" m∙₧ete urΦit, zda pracovnφ v²sledek animace z∙stane zachovßn (freeze) i po jejφm skonΦenφ nebo bude odstran∞n (remove - v²chozφ hodnota).</p>
  210.  
  211. <h4>Aditivnost a kumulativnost animovan²ch hodnot</h4>
  212. <p>Velmi Φasto je p°i animaci u₧iteΦnΘ mφt mo₧nost m∞nit n∞jakou hodnotu (polohu, natoΦenφ) relativn∞ k poΦßteΦnφmu, klidovΘmu stavu. P°edstavme si nap°φklad "rozt°esenφ" animovanΘho objektu okolo jeho klidovΘ polohy - u₧ijete-li nßsledujφcφch atribut∙, nebudete se u₧ muset v∙bec zajφmat o jeho absolutnφ polohu. (Pro animace polohy se samoz°ejm∞ nabφzφ jeÜt∞ alternativnφ °eÜenφ tΘto ·lohy pomocφ zm∞ny sou°adnicovΘho systΘmu, ale to nynφ nenφ d∙le₧itΘ.)</p>
  213. <p>Atribut "additive" urΦφ, zda aktußlnφ animovanß hodnota nahradφ klidovou hodnotu atributu (replace - v²chozφ hodnota) nebo se k nφ bude p°iΦφtat (sum).</p>
  214. <p>Atribut "accumulate" - kumulativnost se uplatnφ v p°φpad∞ animaΦnφch cykl∙, kterΘ prob∞hnou vφce ne₧ jednou. Funguje to p°esn∞ tak, jak byste Φekali - jestli₧e ji nastavφte na hodnotu "sum", pak se k aktußlnφ hodnot∞ animace p°iΦφtß hodnota, kterou m∞l animovan² atribut na konci p°edchßzejφcφho cyklu.</p>
  215.  
  216. <h4>P°φklad pou₧itφ atribut∙</h4>
  217.  
  218. <div class='list'>
  219. <rect width="20px" ...>
  220. <br />  <animate attributeName="width"
  221. <br />           from="0px" to="10px" dur="10s"
  222. <br />           additive="sum" accumulate="sum"
  223. <br />           repeatCount="5"/>
  224. <br /></rect>
  225. </div>
  226.  
  227. <p>Na konci prvnφho opakovßnφ bude hodnota "width" rovna 30 px, na konci cruhΘho cyklu 40 px a tak dßle. A nynφ jeÜt∞ reßlnß <a href='podklady/hejral/963/0935-anim-additive.svg'>demonstrace</a> (Φty°i animovanΘ obdΘlnφky, ka₧d² s r∙znou kombinacφ t∞chto atribut∙):</p>
  228.  
  229. <div class='sample'>
  230. <?xml version="1.0" encoding="UTF-8"?>
  231. <br /> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN"
  232. <br /> "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
  233. <br /><svg version="1.1" baseProfile="tiny"
  234. <br />     xmlns="http://www.w3.org/2000/svg"
  235. <br />     xmlns:xlink="http://www.w3.org/1999/xlink"
  236. <br />     width="320px" viewBox="0 -20 480 300">
  237. <br /><desc>
  238. <br />  Priklad nazorne predvadi animaci rozmeru 4 obdelniku
  239. <br />  funkce atributu 'additive' a 'accumulate'.
  240. <br />  Kazdy obdelnik demonstruje jinou kombinaci parametru.
  241. <br />  Cervene ramovani ukazuje velikost po ukonceni
  242. <br />  vsech 3 animacnich cyklu.
  243. <br /></desc>
  244. <br /><title>9.3.5 Atributy 'additive' a 'accumulate' </title>
  245. <br /><!-- nastav centrovane pismo      -->
  246. <br /><!-- pro vsechny vnorene skupiny  -->
  247. <br /><g font-family="Helvetica" font-size="18" text-anchor="middle">
  248. <br /><!-- 4 stejne obd. umistene touto -->
  249. <br /><!-- transformaci na ruzne pozice -->
  250. <br /><g transform="translate(0, 0)">
  251. <br /><rect x="60" y="20" width="50" height="20"
  252. <br />      fill="none" stroke="red" stroke-width="4"/>
  253. <br /><rect x="60" y="20" width="50" height="20" fill="violet">
  254. <br /><animate attributeName="height" calcMode="discrete"
  255. <br />  additive="replace"  accumulate="none"
  256. <br />  repeatCount="3" from="200" to="20"
  257. <br />  begin="0s" dur="4s" fill="freeze"/>
  258. <br /></rect>
  259. <br /><text x="85" y="0" fill="navy">replace/none</text>
  260. <br /></g>
  261. <br /><!-- 2. obdelnik -->
  262. <br /><g transform="translate(110, 0)">
  263. <br /><rect x="60" y="20" width="50" height="40"
  264. <br />      fill="none" stroke="red" stroke-width="4"/>
  265. <br /><rect x="60" y="20" width="50" height="20" fill="violet" >
  266. <br /><animate attributeName="height" calcMode="discrete"
  267. <br />  additive="sum" accumulate="none"
  268. <br />  repeatCount="3" from="200" to="20"
  269. <br />  begin="0s" dur="4s" fill="freeze"/>
  270. <br /></rect>
  271. <br /><text x="85" y="0" fill="navy">sum/none</text>
  272. <br /></g>
  273. <br /><!-- 3. obdelnik -->
  274. <br /><g transform="translate(220, 0)">
  275. <br /><rect x="60" y="20" width="50" height="60"
  276. <br />      fill="none" stroke="red" stroke-width="4"/>
  277. <br /><rect x="60" y="20" width="50" height="20" fill="violet" >
  278. <br /><animate attributeName="height" calcMode="discrete"
  279. <br />  additive="replace" accumulate="sum"
  280. <br />  repeatCount="3" from="200" to="20"
  281. <br />  begin="0s" dur="4s" fill="freeze"/>
  282. <br /></rect>
  283. <br /><text x="85" y="0" fill="navy">replace/sum</text>
  284. <br /></g>
  285. <br /><!-- 4. obdelnik -->
  286. <br /><g transform="translate(330, 0)">
  287. <br /><rect x="60" y="20" width="50" height="80"
  288. <br />      fill="none" stroke="red" stroke-width="4"/>
  289. <br /><rect x="60" y="20" width="50" height="20" fill="violet">
  290. <br /><animate attributeName="height" calcMode="discrete"
  291. <br />  additive="sum" accumulate="sum"
  292. <br />  repeatCount="3" from="200" to="20"
  293. <br />  begin="0s" dur="4s" fill="freeze"/>
  294. <br /></rect>
  295. <br /><text x="85" y="0" fill="navy">sum/sum</text>
  296. <br /></g>
  297. <br /><!-- obrys platna -->
  298. <br /><rect x="1" y="-19" width="478" height="298" fill="none" stroke-width="2" stroke="blue" />
  299. <br /></g>
  300. <br /></svg>
  301. </div>
  302.  
  303. <h3>Zßkladnφ struktura zßpisu animaΦnφch prvk∙ - elementy</h3>
  304. <p>V tΘto Φßsti si probereme elementy, pomocφ nich₧ budeme provßd∞t animace v SVG.</p>
  305.  
  306. <h4>Element <code>animate</code></h4>
  307. <p>Zcela obecn² prvek, pou₧iteln² k animaci vÜech Φφseln²ch hodnot. V dalÜφch Φßstech poznßte specializovan∞jÜφ elementy, urΦenΘ t°eba jen a pouze k animaci pohybu...</p>
  308. <p><em>Pomocφ jednoho animaΦnφho prvku lze m∞nit v Φase prßv∞ jeden atribut.</em> Ne vÜechny atributy a ne vÜechny elementy mohou b²t zapojeny do deklarativnφch animacφ. Nebojte se ale, v∞tÜinou bude vÜe velmi intuitivnφ a p°φpadnΘ nejasnosti si m∙₧ete ov∞°it v tabulkov²ch p°ehledech normy SVG.</p>
  309.  
  310. <h4>Element <code>set</code></h4>
  311. <p>Tento prvek provßdφ p°esn∞ to, co naznaΦuje jeho anglick² v²znam - nastavφ dan² atribut na danou hodnotu v p°esn∞ definovan² Φasov² ·sek. Vyu₧ijete ho v∞tÜinou p°i operacφch s dvoustavov²mi prom∞nn²mi, nap°φklad typu viditelnost (skryj Φi uka₧ n∞jak² prvek) nebo zm∞na textu. Tento animaΦnφ prvek logicky nem∙₧e pracovat aditivn∞ ani kumulativn∞.</p>
  312. <p>Atribut "to" urΦφ hodnotu, kterß bude nastavena po dobu trvßnφ animace.</p>
  313.  
  314. <h4>Element <code>animateColor</code></h4>
  315. <p>Atributy "from", "by" a "to" v tomto p°φpad∞ samoz°ejm∞ specifikujφ hodnoty barev, p°iΦem₧ je n∞kolik povolen²ch zp∙sob∙ zßpisu - analogicky, tak jak je zapisujete kdy₧ definujete barvy v²plnφ a tah∙. Do hry vstupuje tΘ₧ atribut "color-interpolation" popsan² ji₧ d°φve v Φßsti o vypl≥ovßnφ.</p>
  316.  
  317. <h4>Element <code>animateTransform</code> - dynamickΘ 2D transformace</h4>
  318. <p>Tento prvek umo₧≥uje animovat transformaΦnφ atributy normy SVG. A ty dovolujφ elegantn∞ uskuteΦnit naprosto libovolnΘ polohovΘ transformace, zm∞nu m∞°φtka, zkosenφ...</p>
  319. <p>Atributy elementu <code>animateTransform</code>:</p>
  320.  
  321. <div class='list'>
  322. <ul>
  323. <li><em>attributeName</em> - tento atribut bude v₧dy nastaven takto: <samp>attributeName="transform"</samp></li>
  324. <li><em>type</em> - urΦenφ typu transformace</li>
  325. <li><em>from</em>, <em>by</em>, <em>to</em> - proto₧e v∞tÜina transformaΦnφch operacφ mß vφce ne₧ jeden parametr, budou v tomto p°φpad∞ obsahem t∞chto atribut∙ vÜechny po₧adovanΘ hodnoty. Nap°φklad rotace s poΦßteΦnφm ·hlem 30 stup≥∙ a st°edem otßΦenφ v bod∞ [25,25] se zapφÜe takto:
  326.     <div class='sample'>
  327.     <animateTransform attributeName="transform" type="rotate"
  328.     <br />                  from="30,25,25" to="90,65,65"
  329.     <br />                  begin="click" dur="9s"
  330.     <br />                  additive="sum" fill="freeze" />
  331.     </div>
  332. </li>
  333. </ul>
  334. </div>
  335.  
  336. <p>Typy transformacφ (hodnoty v hranat²ch zßvorkßch jsou nepovinnΘ, volitelnΘ podle typu po₧adovanΘ transformace):</p>
  337.  
  338. <ul>
  339. <li>"translate" - posun_x [,posun_y]</li>
  340. <li>"scale" - m∞°φtko_x [,m∞°φtko_y] - zapφÜe-li se zde pouze jedna hodnota, bude pou₧ita pro zm∞nu m∞°φtka v obou sou°adnicov²ch osßch, jinak bude nßsobenφ pro ka₧dou osu rozdφlnΘ</li>
  341. <li>"rotate" - ·hel [st°ed_x st°ed_y] - pozor, neuvede-li se na tomto mφst∞ st°ed otßΦenφ, bude se dotyΦn² objekt otßΦet nikoli okolo svΘ osy, ale okolo bodu se sou°adnicemi (0,0)</li>
  342. <li>"skewX", "skewY" - ·hel zkosenφ</li>
  343. </ul>
  344.  
  345. <h4>P°φklad pou₧itφ animaΦnφch element∙</h4>
  346. <p>PraktickΘ demonstrace kombinovßnφ animaΦnφch prvk∙ <a href='podklady/hejral/963/0971-anim-combine.svg'>na pohybliv²ch objektech</a> a <a href='podklady/hejral/963/0972-anim-pattern.svg'>na textu°e</a>:</p>
  347.  
  348. <div class='sample'>
  349. <?xml version="1.0" encoding="UTF-8"?>
  350. <br /><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN"
  351. <br />"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">
  352. <br />
  353. <br /><svg xmlns="http://www.w3.org/2000/svg"
  354. <br />     xmlns:xlink="http://www.w3.org/1999/xlink"
  355. <br />     viewBox="0 0 480 240" width="240px"
  356. <br />     version="1.1" baseProfile="basic">
  357. <br /><title>9.7.2 Animace</title>
  358. <br /><desc>
  359. <br />  Priklad animuje transformaci vyplnoveho vzoru
  360. <br />  a ukazuje jak snadno muzete v SVG vyrobit
  361. <br />  i relativne slozite graficke hracky.
  362. <br /></desc>
  363. <br />  <!-- definice textury slozene ze 4 ctvercu -->
  364. <br />  <!-- navic zdeformovanych transformacnim atr. -->
  365. <br />  <pattern patternUnits="userSpaceOnUse" id="Pat3"
  366. <br />           x="0" y="0" width="20" height="20"
  367. <br />           patternTransform="translate(25 215) scale(2) skewX(45)">
  368. <br />    <rect x="0" y="0" width="10" height="10" fill="red"/>
  369. <br />    <rect x="10" y="0" width="10" height="10" fill="green"/>
  370. <br />    <rect x="0" y="10" width="10" height="10" fill="blue"/>
  371. <br />    <rect x="10" y="10" width="10" height="10" fill="yellow"/>
  372. <br />    <!-- toto vytvari dojem nekonecneho beziciho pasu -->
  373. <br />    <animateTransform attributeName="patternTransform"
  374. <br />      type="translate" from="0,0" to="40,0" dur="1s"
  375. <br />      fill="freeze" additive="sum" repeatCount="indefinite" />
  376. <br />  </pattern>
  377. <br />  <!-- textura se aplikuje na objekty -->
  378. <br />  <rect x="20" y="30" width="440" height="50" fill="url(#Pat3)"/>
  379. <br />  <circle cx="400" cy="120" r="40" fill="url(#Pat3)" />
  380. <br />  <rect x="20" y="100" width="100" height="50" fill="url(#Pat3)">
  381. <br />    <!-- vytvari efekt smrstovani a natahovani -->
  382. <br />    <animateTransform attributeName="transform"
  383. <br />      type="scale" values="1,1;3,1;1,1" keyTimes="0 85% 1" dur="8s"
  384. <br />      fill="freeze" additive="sum" repeatCount="indefinite" />
  385. <br />  </rect>
  386. <br />  <text font-family="Helvetica" font-size="32" x="20" y="220">
  387. <br />    Vzorky jsou animovany.
  388. <br />  </text>
  389. <br /><!-- obrys platna -->
  390. <br /><rect x="1" y="1" width="478" height="238"
  391. <br />      fill="none" stroke-width="2" stroke="blue" />
  392. <br /></svg>
  393. </div><div class='refer'><h3><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/serial.asp?serial=76' title='p°ehled Φlßnk∙ vΦetn∞ anotacφ'>Kurz SVG - tvorba vektorovΘ grafiky v XML</a></h3><p>Pokud u₧ mßte dost suchΘ teorie Scalable Vector Graphics, nenφ nic sna₧Üφho, ne₧ se vrhnout na praktickΘ testovßnφ jeho mo₧nostφ. Kurz SVG vßm usnadnφ osvojenφ zßkladnφch struktur a vlastnostφ tohoto jazyka pro prßci s vektorovou grafikou. Tato sΘrie Φlßnk∙ dosud nebyla ukonΦena!</p><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3578'>Kurz SVG - animace (praktickΘ ukßzky)</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3566'>Kurz SVG - animace (Φasovßnφ)</a></li><li><strong>Kurz SVG - nenφ to Flash a p°ece se toΦφ!</strong> (prßv∞ Φtete)</li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3514'>Kurz SVG - transformace sou°adnic</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3506'>Kurz SVG - o°ezßvßnφ a maskovßnφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3483'>Kurz SVG - vypl≥ovßnφ II</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3476'>Kurz SVG - vypl≥ovßnφ I</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3469'>Kurz SVG - text</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3464'>Kurz SVG - grafickß primitiva</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3460'>Kurz SVG - struktura dokumentu, zobrazovacφ a vykreslovacφ model</a></li></ul></div>
  394.  
  395. <div id='article-author'>
  396. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=187'>Hejral, Martin</a> (2. 9. 2004)
  397.  
  398. </div>
  399.  
  400.  
  401. </div></div>
  402. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  403. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  404.  
  405.  
  406.  
  407. <div class='page-right-box book'>
  408.     <h3>Kni₧nφ novinka</h3>
  409.     <div class='page-right-box-in'>
  410.         <div class='book-top'>
  411.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=270'>CSS pro zelenßΦe</a></h4>
  412.         </div>
  413.         <div class='image'>
  414.             <img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  415.         </div>
  416.         <div class='book-bottom'>Cena: <span class='book-price-old'>289 KΦ</span> <span class='book-price-new'>260 KΦ</span></div>
  417.     </div>
  418. </div>
  419.  
  420.  
  421.  
  422. <div class='page-right-box reading'><h3 title='NejΦten∞jÜφ Φlßnky za poslednφch 14 dn∙'>NejΦten∞jÜφ</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3570'>Hrßtky s okrajem textu v CSS - poznßmky a kontextovΘ nadpisy</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3569'>èet°ete sv²m Φasem!</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3573'>Editory pro webdesignΘry - Üikovnφ trpaslφci</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3574'>PSPad - dalÜφ z °ady textov²ch editor∙?</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3572'>Atom 0.3</a></li></ul></div></div><div class='page-right-box cauldron'><h3 title='Nejdiskutovan∞jÜφ Φlßnky za poslednφch 21 dn∙'>Diskuznφ kotel</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3574' title='(47 komentß°∙)'>PSPad - dalÜφ z °ady textov²ch editor∙?</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3573' title='(38 komentß°∙)'>Editory pro webdesignΘry - Üikovnφ trpaslφci</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3555' title='(20 komentß°∙)'>Zden∞k Polßch: ╚esk² hernφ magnßt</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3577' title='(10 komentß°∙)'>NumericTextBox control v ASP.NET</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3569' title='(9 komentß°∙)'>èet°ete sv²m Φasem!</a></li></ul></div></div>
  423.  
  424.  
  425.  
  426. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  427. </div>
  428. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  429. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  430. </body>
  431. </html>
  432.