117 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | |
| <html xmlns="http://www.w3c.org/1999/xhtml">
 | |
| <head>
 | |
| <title>Canvas box</title>
 | |
| <style type='text/css'>
 | |
| * {
 | |
|   margin:0;
 | |
|   padding:0;
 | |
|   }
 | |
| 
 | |
| canvas {
 | |
|   position:absolute;
 | |
|   top:50%;
 | |
|   left:50%;
 | |
|   margin-top:-200px;
 | |
|   margin-left:-320px;
 | |
|   border:1px solid #000;
 | |
|   }
 | |
| </style>
 | |
| <script type='text/javascript'>
 | |
| function box() {
 | |
| var ctx=document.getElementById('canvas').getContext('2d')
 | |
| var i
 | |
| if (x<0 || x>639 || y<0 || y>399) end=[320,-100]
 | |
| else {
 | |
| for (i=0;i<pl;i++) {
 | |
| if (p[i][0]==x) x++
 | |
| if (p[i][1]==y) y++
 | |
| }
 | |
| end=[x,y]
 | |
| }
 | |
| 
 | |
| if (end[1]>p[0][1]) l*=-1
 | |
| var ep=new Array()
 | |
| for (i=0;i<pl;i++) ep[i]=[p[i][0]-l/((end[1]-p[i][1])/(end[0]-p[i][0])),p[i][1]-l]
 | |
| ctx.clearRect(0,0,640,400)
 | |
| ctx.beginPath()
 | |
| for (i=0;i<pl;i++) {
 | |
| ni=i+1-Math.floor((i+1)/pl)*pl
 | |
| ctx.moveTo(p[i][0],p[i][1])
 | |
| ctx.lineTo(p[ni][0],p[ni][1])
 | |
| ctx.moveTo(p[i][0],p[i][1])
 | |
| ctx.lineTo(ep[i][0],ep[i][1])
 | |
| ctx.lineTo(ep[ni][0],ep[ni][1])
 | |
| }
 | |
| ctx.stroke()
 | |
| 
 | |
| if (p[2][0]>637) a=-1
 | |
| else if (p[0][0]<3) a=1
 | |
| for (i=0;i<pl;i++) p[i][0]+=a
 | |
| 
 | |
| if (p[2][0]-p[1][0]==75) z=-1
 | |
| else if (p[2][0]-p[1][0]==25) z=1
 | |
| p[2][0]+=z
 | |
| p[3][0]+=z
 | |
| 
 | |
| if (p[1][1]>397) b=-.5
 | |
| else if (p[0][1]<3) b=.5
 | |
| for (i=0;i<pl;i++) p[i][1]+=b
 | |
| 
 | |
| if (p[1][1]-p[0][1]==75) z=-1
 | |
| else if (p[1][1]-p[0][1]==25) z=1
 | |
| p[1][1]+=z
 | |
| p[2][1]+=z
 | |
| 
 | |
| if (l==-10) c=.5
 | |
| else if (l==40) c=-.5
 | |
| l+=c
 | |
| 
 | |
| setTimeout("box()",10)
 | |
| }
 | |
| 
 | |
| function load() {
 | |
| p=new Array()
 | |
| p[0]=[2,348]
 | |
| p[1]=[2,398]
 | |
| p[2]=[52,398]
 | |
| p[3]=[52,348]
 | |
| pl=p.length
 | |
| l=10
 | |
| c=.5
 | |
| z=-1
 | |
| x=-1
 | |
| y=-1
 | |
| 
 | |
| box()
 | |
| }
 | |
| 
 | |
| function getwh() {
 | |
| if (self.innerHeight) {
 | |
| h=self.innerHeight
 | |
| w=self.innerWidth
 | |
| }
 | |
| else if (document.documentElement && document.documentElement.clientHeight) {
 | |
| h=document.documentElement.clientHeight
 | |
| w=document.documentElement.clientHeight
 | |
| }
 | |
| else if (document.body) {
 | |
| h=document.body.clientHeight
 | |
| w=document.body.clientWidth
 | |
| }
 | |
| }
 | |
| 
 | |
| function mm(e) {
 | |
| getwh()
 | |
| x=Math.floor(e.pageX-(w-642)/2-2)
 | |
| y=Math.floor(e.pageY-(h-402)/2-2)
 | |
| }
 | |
| 
 | |
| window.onload=load
 | |
| document.onmousemove=mm
 | |
| </script>
 | |
| </head>
 | |
| <body>
 | |
| <canvas id='canvas' width='640' height='400'></canvas>
 | |
| </body>
 | |
| </html> | 
