W3-SI.com     HTML CSS JavaScript Načrtovanje    
  logotip  
SERŠ Maribor Iskanje Primeri

Risanje v JavaScript

Koda:
<script type="text/javascript">
	var curPic="slika"

	function point(xx,yy,cc) {
		if(xx<0 ¦¦ yy<0 ¦¦ xx>=320 ¦¦ yy>=240) return 0
		var x=document.createElement("div")
		x.style.width="1px"
		x.style.height="1px"
		x.style.backgroundColor=cc
		x.style.top=yy+"px"
		x.style.left=xx+"px"
		x.style.overflow="hidden"
		x.style.position="absolute"
		document.getElementById(curPic).appendChild(x)
	}

function cls() {
var x=document.getElementById(curPic).cloneNode(false)
x.id=curPic+"Cloned"
document.getElementById(curPic).parentNode.insertBefore(x,document.getElementById(curPic))
document.getElementById(curPic).parentNode.removeChild(document.getElementById(curPic))
document.getElementById(curPic+"Cloned").id=curPic
}

function narisi() {
	for(var xx=0;xx<320;xx++) {
		point(xx,120-Math.sin(xx/20)*40,"black")
	}
}
</script>

<div id="slika" style="position:relative;width:320px;height:240px;border:solid 1px">
</div>
<form action="#">
 <p>
  <input type="button" value="Nariši sinus" onclick="narisi()" />
  <input type="button" value="Počisti polje" onclick="cls()" />
 </p>
</form>
Izgled v
brskalniku:

Razlaga: Za risanje v JavaScriptu ni posebnih ukazov, zato programerji uporabljamo zvijače, da JavaSript pripravimo do risanja. Ena od metod, kako to storiti, je z dodajanjem značk v HTML strukturo.
Za risanje je najprej potrebna risalna površina. V tem primeru je to element DIV velkosti 320x240px, imenovan slika. Funkcija point(xx,yy,cc) izriše točko na risalni površini. To stori tako, da ustvari nov, prazen DIV element, ki mu s pomočjo CSS-a določi velikost 1x1px, barvo cc, pozicijo (xx,yy) in druge lastnosti. Ta element je v pomnilniku brskalnika in še ni viden na strani. S pomočno postopka appendChild(otrok) nato ta element doda v HTML strukturo in tako DIV postane točka na risalni površini. Če kliknemo na gumb "Nariši sinus", JavaScript pokliče funkcijo narisi(), ki s pomočjo funkcije point nariše v risalno površino matematični sinus.
Čiščenje risalne površine je še en trik, ki ga uporabi funkcija cls(). Ta funkcija najprej ustvari novo risalno površino, in sicer tako, da klonira obstoječo, vendar brez otrok (t.j. točk). To stori z DOM postopkom cloneNode(false). Klonirani, prazni risalni površini začasno spremeni ID, saj v HTML dokumentu ne smeta obstajati dve znački z enakim ID-jem. Z DOM postopkom insertBefore(otrok,brat) vstavi to risalno površino tik pred obstoječo v HTML strukturo. Nato s postopkom removeChild(otrok), odstrani staro risalno površino, novi pa spremeni ID nazaj na slika. Rezultat je nova, prazna risalna površina z enakimi lastnostmi, kot prejšnja. Funkcijo cls() zaženemo, če kliknemo na gumb "Počisti polje".

SERŠ Maribor : Strokovna gimnazija : 2006 : Cvetko Pirš