wip
This commit is contained in:
		
							parent
							
								
									dd724b609f
								
							
						
					
					
						commit
						d3a0546390
					
				|  | @ -1,36 +1,41 @@ | |||
| <mk-analog-clock> | ||||
| 	<canvas ref="canvas" width="256" height="256"></canvas> | ||||
| 	<style lang="stylus" scoped> | ||||
| 		:scope | ||||
| 			> canvas | ||||
| 				display block | ||||
| 				width 256px | ||||
| 				height 256px | ||||
| 	</style> | ||||
| 	<script lang="typescript"> | ||||
| 		const Vec2 = function(x, y) { | ||||
| 			this.x = x; | ||||
| 			this.y = y; | ||||
| <template> | ||||
| <canvas class="mk-analog-clock" ref="canvas" width="256" height="256"></canvas> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| import Vue from 'vue'; | ||||
| import { themeColor } from '../../../config'; | ||||
| 
 | ||||
| const Vec2 = function(x, y) { | ||||
| 	this.x = x; | ||||
| 	this.y = y; | ||||
| }; | ||||
| 
 | ||||
| export default Vue.extend({ | ||||
| 	data() { | ||||
| 		return { | ||||
| 			clock: null | ||||
| 		}; | ||||
| 	}, | ||||
| 	mounted() { | ||||
| 		this.tick(); | ||||
| 		this.clock = setInterval(this.tick, 1000); | ||||
| 	}, | ||||
| 	beforeDestroy() { | ||||
| 		clearInterval(this.clock); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		tick() { | ||||
| 			const canv = this.$refs.canvas as any; | ||||
| 
 | ||||
| 		this.on('mount', () => { | ||||
| 			this.draw() | ||||
| 			this.clock = setInterval(this.draw, 1000); | ||||
| 		}); | ||||
| 
 | ||||
| 		this.on('unmount', () => { | ||||
| 			clearInterval(this.clock); | ||||
| 		}); | ||||
| 
 | ||||
| 		this.draw = () => { | ||||
| 			const now = new Date(); | ||||
| 			const s = now.getSeconds(); | ||||
| 			const m = now.getMinutes(); | ||||
| 			const h = now.getHours(); | ||||
| 
 | ||||
| 			const ctx = this.$refs.canvas.getContext('2d'); | ||||
| 			const canvW = this.$refs.canvas.width; | ||||
| 			const canvH = this.$refs.canvas.height; | ||||
| 			const ctx = canv.getContext('2d'); | ||||
| 			const canvW = canv.width; | ||||
| 			const canvH = canv.height; | ||||
| 			ctx.clearRect(0, 0, canvW, canvH); | ||||
| 
 | ||||
| 			{ // 背景 | ||||
|  | @ -72,7 +77,7 @@ | |||
| 				const length = Math.min(canvW, canvH) / 4; | ||||
| 				const uv = new Vec2(Math.sin(angle), -Math.cos(angle)); | ||||
| 				ctx.beginPath(); | ||||
| 				ctx.strokeStyle = _THEME_COLOR_; | ||||
| 				ctx.strokeStyle = themeColor; | ||||
| 				ctx.lineWidth = 2; | ||||
| 				ctx.moveTo(canvW / 2 - uv.x * length / 5, canvH / 2 - uv.y * length / 5); | ||||
| 				ctx.lineTo(canvW / 2 + uv.x * length,     canvH / 2 + uv.y * length); | ||||
|  | @ -90,6 +95,14 @@ | |||
| 				ctx.lineTo(canvW / 2 + uv.x * length,     canvH / 2 + uv.y * length); | ||||
| 				ctx.stroke(); | ||||
| 			} | ||||
| 		}; | ||||
| 	</script> | ||||
| </mk-analog-clock> | ||||
| 		} | ||||
| 	} | ||||
| }); | ||||
| </script> | ||||
| 
 | ||||
| <style lang="stylus" scoped> | ||||
| .mk-analog-clock | ||||
| 	display block | ||||
| 	width 256px | ||||
| 	height 256px | ||||
| </style> | ||||
		Loading…
	
		Reference in New Issue