JavaScript a SVG Cvičení 2 Z8144 Počítačová grafika v kartografii Jaro 2020 Filip Leitner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rozvrh Minimum 60% bodov Odovzdanie vždy do 4.00 k danému dátumu Cvičenie 1 => do 16.3 4:00, Cvičenie 4 => 23.4 4:00 Filip Leitner JavaScript a SVG Počítačová grafika 2 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Základní tvary – opakování rectangle rect obdélník/čtverec circle circle kruh ellipse ellipse elipsa line line úsečka polygon polygon polyline polyline lomená čára path path trasa text text Filip Leitner JavaScript a SVG Počítačová grafika 3 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obdélník / čtverec Filip Leitner JavaScript a SVG Počítačová grafika 4 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kruh / elipsa Filip Leitner JavaScript a SVG Počítačová grafika 5 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Úsečka Filip Leitner JavaScript a SVG Počítačová grafika 6 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lomená čára Filip Leitner JavaScript a SVG Počítačová grafika 7 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Polygon (N-úhelník) Filip Leitner JavaScript a SVG Počítačová grafika 8 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Text Počítačová grafika v kartografii Počítačová grafika v kartografii Filip Leitner JavaScript a SVG Počítačová grafika 9 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trasa Path Velká písmena – absolutní pozice malá písmena – relativní pozice moveto M(x y) (posun do bodu x y) closepath Z (uzavření trasy) lineto L(x y) (vykreslí čáru do bodu x y) horizontal lineto H(x) (horizontální čára až do) vertical lineto V(y) (svislá čára) curveto C(x1 y1 x2 y2 x y) smooth curveto S(x2 y2 x y) quadratic Bézier curve Q(x1 y1 x y) smooth quadratic Bézier curveto T(x y) elliptical Arc A(…) (eliptická výšeč/úseč) http://www.w3.org/TR/SVG/paths.html Filip Leitner JavaScript a SVG Počítačová grafika 10 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trasa – příklad 1 Filip Leitner JavaScript a SVG Počítačová grafika 11 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trasa – příklad 2 Filip Leitner JavaScript a SVG Počítačová grafika 12 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. úkol V SVG: vytvořte sněhuláka pomocí 3 kruhů, nos (mrkev) jako trojúhelník a oči vytvořte hvězdu pomocí trasy můžete použít CodePen (http://codepen.io/pen/) Filip Leitner JavaScript a SVG Počítačová grafika 13 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. úkol - riešenie Filip Leitner JavaScript a SVG Počítačová grafika 14 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. úkol - riešenie Filip Leitner JavaScript a SVG Počítačová grafika 15 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JavaScript – základní eventy (události) HTML atribut název eventu akce onclick click kliknutí myší onmousedown mousedown stisknutí tlačítka myši onmouseup mouseup uvolnění tlačítka myši onmouseover mouseover najetí myší na prvek onmouseout mouseout odjetí myší z prvku onkeydown keydown stisk klávesy onkeyup keyup konec stisku klávesy Rozdíly mezi eventy click, mousedown, mouseup viz https://stackoverflow.com/a/14805233. Filip Leitner JavaScript a SVG Počítačová grafika 16 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . onclick

Testovací div

Příklad: https://codepen.io/LeSimon/pen/ywgovB Filip Leitner JavaScript a SVG Počítačová grafika 17 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . onmouseover / onmouseout function testmouseover(element){ element.style.backgroundColor='green'; }; function testmouseout(element){ element.style.backgroundColor='red'; };

Testovací div

Příklad: https://codepen.io/LeSimon/pen/oVBeqe Filip Leitner JavaScript a SVG Počítačová grafika 18 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . onkeydown / onkeyup function testKeyUp(event){ event.target.style.backgroundColor='red'; } function testKeyDown(event){ event.target.style.backgroundColor='green'; } document.getElementById("input").addEventListener("keyup", testKeyUp); document.getElementById("input").addEventListener("keydown", testKeyDown); Příklad: https://codepen.io/LeSimon/pen/ywgoEL Filip Leitner JavaScript a SVG Počítačová grafika 19 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. úkol Pomocí HTML a JS: Vytvořte odstavec(div) s textem, který po najetí myši změní tloušťku písma na tučné(fontWeight:bold) a po odjetí myší se změní zpátky na normální text(fontWeight:normal). Můžete použít CodePen (http://codepen.io/pen/) Filip Leitner JavaScript a SVG Počítačová grafika 20 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. úkol - riešenie ...

Some random text

... document.getElementById('i').addEventListener('mouseover', (e) =>{ e.target.style.fontWeight = 'bold'; }) function mouseOut (e){ e.target.style.fontWeight = 'normal'; } document.getElementById('i').addEventListener('mouseout', mouseOut ) Filip Leitner JavaScript a SVG Počítačová grafika 21 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JavaScript – práce s SVG V zásadě stejné jako doposud s HTML. Filip Leitner JavaScript a SVG Počítačová grafika 22 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eventy v SVG dokumentu Filip Leitner JavaScript a SVG Počítačová grafika 23 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eventy pomocí JS const theCircle = document.getElementById("thecircle"); function circleOver(event){ event.target.setAttribute('fill', 'green'); } function circleOut(event){ event.target.setAttribute('fill', 'red'); } theCircle.addEventListener("mouseover", circleOver); theCircle.addEventListener("mouseout", circleOut); Filip Leitner JavaScript a SVG Počítačová grafika 24 / 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Domácí úkol Vytvořte svg objekt obsahující dva červené kruhy Po kliknutí se kruh vždy přemístí na jiné místo (náhodné) – použijte event click Úlohu je možné řešit více způsoby, dobře promyšlené řešení vám ušetří spoustu úsilí Úkol odevzdávejte jako jeden HTML soubor nebo archiv .zip Termín odevzdání: 23. 3. 4:00 Filip Leitner JavaScript a SVG Počítačová grafika 25 / 26 Díky za pozornost! https://discord.gg/TKt6s3n . . . . . . . . . . . . . . . . . . . .