希望你一切順利!使用JavaScript數學。方法如HTML Canvas .fillRect座標
我花了整整一個晚上試圖找出如何使用(Math.floor(Math.random())
作爲HTML畫布元素上使用的.fillRect
方法的座標。
我查看過這個網站和網上的一些答案,但沒有任何建議已經工作到目前爲止。我目前的做法是基於this Stack Overflow answer。
我想每次單擊按鈕時在畫布的隨機點繪製一個20 * 20px的矩形。除了將從Math
方法獲得的隨機數字填入.fillRect
座標參數之外,我已經完成了所有工作。
這是我的HTML代碼和我的JS代碼:
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
$("#btn").click(function() {
var rectCoord = {
"x": (Math.floor(Math.random() * 699) + 1), //Canvas is 700px wide.
"y": (Math.floor(Math.random() * 599) + 1), //Canvas is 600px high.
};
console.log(rectCoord.x, rectCoord.y)
//Test. Random X and Y points log in console correctly.
ctx.fillRect(rectCoord.x, rectCoord.y, 20, 20);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<canvas id="canvas"></canvas>
<button id="btn">Click!</button>
</div>
的console.log
是我在那裏測試,如果:
1)的 「X」 和 「Y」點數在每次點擊都被隨機化,並且
2)rectCoord.x,rectCoord.y數據點正在通過正確的用於下面的代碼行中。
隨機點正在記錄到控制檯正常,每當我在fillRect
中放置整數作爲座標參數時,它會完美繪製一個矩形。
我只是不知道如何將隨機點作爲參數插入.fillRect
。他們爲什麼作爲console.log
而不是.fillRect
的參數?
非常感謝你的回覆,我很新的編碼,我只是不能包住我的頭!任何幫助深表感謝!
你試過設置'ctx.fillStyle =「black''或類似的東西? –
是的,它沒有區別。 'fillStyle'默認爲黑色,當我爲座標參數輸入數字(例如40,500)時,代碼將按照它應該運行的方式運行。這就是爲什麼我認爲這與我嘗試使用變化的變量作爲座標值有關。 @PatrickRoberts – Pete
你應該使用'ctx。fillRect((Math.random()* ctx.canvas.width-20)| 0,(Math.random()* ctx.canvas.height -20)| 0,20,20);'確保20乘20矩形**始終**出現在畫布上。 – Blindman67