Я пытаюсь загрузить цветовую схему из набора предопределенных цветовых схем случайным образом при каждой загрузке страницы. Надеюсь, моя попытка закодировать его не требует пояснений, но мой подход состоял в том, чтобы создать массив с именем «colorSchemes», заполнить его 3 цветовыми схемами (с парами ключ-значение, определяющие 3 цвета, составляющие схему), а затем сохранить выбранная цветовая схема в переменной.
Затем я попытался назначить цвет из выбранной схемы для fillStyle объекта. К сожалению, я рисую пустой (буквально). Любая помощь будет оценена по достоинству. Фрагмент:
//define colour schemes
var colourSchemes = [];
colourSchemes.colourScheme_1 = {colour_1 : "#84FFC9", colour_2 : "#AAB2FF", colour_3 : "#ECA0FF"};
colourSchemes.colourScheme_2 = {colour_1 : "#540D6E", colour_2 : "#EE4266", colour_3 : "#FFD23F"};
colourSchemes.colourScheme_3 = {colour_1 : "#FFBA49", colour_2 : "#20A39E", colour_3 : "#EF5B5B"};
//random colour scheme selected on load
var active_colourScheme = colourSchemes[Math.floor(Math.random() * colourSchemes.length)];
//background colour
ctx.fillStyle = active_colourScheme.colour_1;
ctx.fillRect(0, 0, canvasW, canvasH);
Теперь вы заполняете Array
значениями.
В вашем случае вы можете просто поместить значения в массив во время объявления массива:
const colourScheme_1 = {colour_1 : "#84FFC9", colour_2 : "#AAB2FF", colour_3 : "#ECA0FF"};
const colourScheme_2 = {colour_1 : "#540D6E", colour_2 : "#EE4266", colour_3 : "#FFD23F"};
const colourScheme_3 = {colour_1 : "#FFBA49", colour_2 : "#20A39E", colour_3 : "#EF5B5B"};
const colourSchemes = [colourScheme_1, colourScheme_2, colourScheme_3];
//random colour scheme selected on load
const active_colourScheme = colourSchemes[Math.floor(Math.random() * colourSchemes.length)];
console.info(active_colourScheme);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Или, альтернативно, push()
значения в массив. Это работает, если вы хотите добавить значения в массив позже после его объявления.
const colourSchemes = [];
const colourScheme_1 = {colour_1 : "#84FFC9", colour_2 : "#AAB2FF", colour_3 : "#ECA0FF"};
const colourScheme_2 = {colour_1 : "#540D6E", colour_2 : "#EE4266", colour_3 : "#FFD23F"};
const colourScheme_3 = {colour_1 : "#FFBA49", colour_2 : "#20A39E", colour_3 : "#EF5B5B"};
colourSchemes.push(colourScheme_1, colourScheme_2, colourScheme_3)
//random colour scheme selected on load
const active_colourScheme = colourSchemes[Math.floor(Math.random() * colourSchemes.length)];
console.info(active_colourScheme);
.as-console-wrapper { max-height: 100% !important; top: 0; }
I would recommend you read the article on
Array
which I have linked here (and above), so you see how you can use arrays properly in JavaScript.
colourSchemes.colourScheme_1
не является индексом массива. Вы, вероятно, хотитеcolourScheme.push
эти объекты