您好我尝试在画布上用随机颜色绘制一个带有功能的球,但它不会起作用。如何修复语法位于ctx.fillStyle = 'JSON.stringify(getRandomElement(circles))';
的权利?
未捕获的ReferenceError:未定义黄色
function drawcircles() {
function getRandomElement(array) {
if (array.length == 0) {
return undefined;
}
return array[Math.floor(Math.random() * array.length)];
}
var circles = [
yellow,
red,
blue
];
ctx.beginPath();
ctx.arc(ballx * 108, canvasHeight / 2, x*5, 0, 2*Math.PI, false);
ctx.fillStyle = 'JSON.stringify(getRandomElement(circles))';
ctx.fill();
ctx.closePath;
}
答案 0 :(得分:1)
在您的代码中,数组yellow
中的red
,blue
和circles
是变量,并且尚未定义它们。所以你可以a)将HEX代码放在那些变量中,或者b)只用HEX代码替换它们。
a)例如。
var yellow = "#ffff00"; //first put the code for yellow in the variable
var circles = [yellow] //then put that variable in the list
b)例如。
var circles = ["#ffff00"]; //put the HEX code directly in the array
答案 1 :(得分:1)
为了利益的缘故。您可以使用以下脚本生成随机十六进制颜色:
var color = '#' + Math.floor(Math.random() * 16777215).toString(16);
有关其原因的更多信息here。
答案 2 :(得分:-1)
我的坏。
搞糊涂了我。答案 3 :(得分:-1)
正如您所看到的here(许多参考文献中的一个),填充样式颜色必须声明为HEX。
您必须使用该符号转换颜色才能运行代码
您的阵列将变为:
var circles = [
'#FFFF00',
'#FF0000',
'#0000FF'
];
无论如何你的数组也是错误的,因为你没有用单引号或双引号包装字符串的值,因为这些是字符串而不是js变量