Pertama, saya mencipta dua fungsi biru dan merah.
function drawBlueCircle(){ ctx.fillStyle = 'blue'; ctx.beginPath(); ctx.arc(mouse.x,mouse.y,50,0,Math.PI *2) ctx.fill(); } function drawRedCircle(){ ctx.fillStyle = 'red' ctx.beginPath(); ctx.arc(mouse.x,mouse.y,50,0,Math.PI * 2); ctx.fill(); }
Di sini saya menggunakan pernyataan if
dalam gelung For untuk mencipta clickEventListener
canvas.addEventListener('click',function(event){ mouse.x = event.x, mouse.y = event.y for(let i=0;i<event.length;i++){ (i%2==0)? drawBlueCircle():drawRedCircle() // here i am trying to alter my clicks using for loops. } })
Kesilapan saya ialah:
Walaupun selepas mengklik tetikus, ia tetap merah. Saya mendapat warna merah ini dengan eventListener
mousemove lain tetapi itu bukan masalahnya.
P.S.: Ini bukan kod lengkap. Saya hanya memberikan yang saya tidak dapat menyelesaikan (di atas).
Saya cuba kod di atas tetapi tidak dapat menukar warna.
Pilihan paling mudah ialah menggunakan pembolehubah boolean untuk menyimpan warna yang anda inginkan dan kemudian terbalikkannya pada setiap klik:
Anda harus mengekalkan rujukan kepada warna seterusnya yang akan dilukis dan bukannya menggunakan gelung. Selain itu, jika anda menghantar warna (dan konteks serta peristiwa) sebagai hujah fungsi, anda boleh memudahkan fungsi kepada hanya satu:
drawCircle
dan menggunakan warna itu untuk menentukan warna isian bulatan.