お世話になります。
javascript canvasにて、それぞれのボタンを押すと、それぞれ別の図形が描画されるページを作りたく、以下のようなコードを書きました。
function で囲うと動作しなくなってしまいます。
(それぞれの動作をfunctionで囲う前は動作を確認しています。)
描画するx01などが定義されていないとエラーを吐きますが、
これはローカル関数、グローバル関数の関係なのでしょうか?
よろしくお願いいたします。
html,javascript
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>My Canvas</title> 6 7</head> 8<body> 9 <canvas width="1024" height="768"> 10 Canvas not supported. 11 </canvas> 12 13<script> 14 'use strict'; 15 16{ 17 let t=0; 18 19 function draw() { 20 const canvas = document.querySelector('canvas'); 21 if (typeof canvas.getContext === 'undefined') { 22 return; 23 } 24 const ctx = canvas.getContext('2d'); 25 26//解像度 27const CANVAS_WIDTH=1024; 28const CANVAS_HEIGHT=768; 29const dpr =window.devicePixelRatio || 1; 30canvas.width=CANVAS_WIDTH*dpr; 31canvas.height=CANVAS_HEIGHT*dpr; 32 33ctx.scale(dpr,dpr); 34canvas.style.width=CANVAS_WIDTH+'px'; 35canvas.style.height=CANVAS_HEIGHT+'px'; 36 37function rand(){ 38//triangle 39 var www=1024-768; 40 var x01=Math.random()*www; 41 var y01=Math.random()*www; 42 var x02=Math.random()*www; 43 var y02=Math.random()*www; 44 var x03=Math.random()*www; 45 var y03=Math.random()*www; 46 47 48} 49function tyo(){ 50//直角三角形 51 var x01=0; 52 var y01=0; 53 var x02=0+30; 54 var y02=0; 55 var x03=0+0; 56 var y03=0+40; 57 } 58function sei(){ 59//正三角形 60 var x01=200; 61 var y01=200; 62 var x02=200+100; 63 var y02=200; 64 var x03=200+50; 65 var y03=200-50*Math.pow(3,1/2); 66 } 67 68 ctx.beginPath(); 69 ctx.moveTo(x01, y01); 70 ctx.lineTo(x02, y02); 71 ctx.lineTo(x03, y03); 72 ctx.lineTo(x01, y01); 73 ctx.fillStyle='skyblue'; 74 ctx.stroke(); 75 } 76 77 draw(); 78} 79</script> 80 81 <input type="button" value="btn1" onclick="rand();"/> 82 <input type="button" value="btn2" onclick="tyo();"/> 83 <input type="button" value="btn3" onclick="sei();"/> 84 85</body> 86</html> 87コード
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/12 02:27
2019/11/12 02:51
2019/11/12 03:16
2019/11/12 03:17
2019/11/12 03:18
2019/11/12 03:24
2019/11/12 03:35
2019/11/12 03:51
2019/11/12 04:01
2019/11/12 04:41
2019/11/12 04:45
2019/11/12 04:59
2019/11/12 05:49
2019/11/12 07:56