p5.jsを使って簡単な絵を描画できるようにしてみます。
サンプルコード
今回はp5.jsとp5.dom.jsを使用して、線の色と太さの変更、白紙に戻す機能を付けてみます。
JavaScript
var slider = []; // 各スライダーを格納
var input = []; // 各inputを格納
var delButton;
function setup() { // 最初に実行される関数
createCanvas(640, 480); // canvasの作成
noStroke();
// color用のスライダーとinput作成
for (var i = 0; i < 3; i++) {
slider[i] = createSlider(0, 255, 0);
slider[i].position(460, (i * 30) + 10);
slider[i].input(sliderFunction);
input[i] = createInput('0');
input[i].size(30).position(600, (i * 30) + 10);
input[i].input(inputFunction);
}
var rText = createElement('div', 'R').position(445, 15);
var gText = createElement('div', 'G').position(445, 45);
var bText = createElement('div', 'B').position(445, 75);
// weight用のスライダーとinput作成
slider[3] = createSlider(1, 20, 5);
slider[3].position(460, 100);
slider[3].input(sliderFunction);
input[3] = createInput('5');
input[3].size(30).position(600, 100);
input[3].input(inputFunction);
var wText = createElement('div', 'W').position(445, 105);
// delボタン作成
delButton = createButton('Clear');
delButton.position(540, 140);
delButton.mousePressed(del);
}
function draw() {
// colorとweight用の値取得
r = slider[0].value();
g = slider[1].value();
b = slider[2].value();
w = slider[3].value();
// マウスが押下した状態かどうか
if (mouseIsPressed) {
push();
stroke(r, g, b); // 線の色指定
strokeWeight(w); // 線の太さ指定
line(currentX, currentY, mouseX, mouseY); // 線の描画
pop();
}
// カーソルのcanvas上の現在位置を保存しておく
currentX = mouseX;
currentY = mouseY;
// 右上のゲージ部分では線が描画されないようにする
push();
fill(200);
rect(440, 0, 200, 180);
pop();
}
// canvas内の線を削除
function del() {
background(255);
}
// inputの値を変更したときの処理
function inputFunction() {
for (var i = 0; i < slider.length; i++) {
var inputVal = input[i].value();
var sliderVal = slider[i].value();
if(i != 3) {
var sliderMin = 0;
var sliderMax = 255;
} else {
var sliderMin = 1;
var sliderMax = 20;
}
// inputの値がスライダーの範囲内でない場合は飛ばす
if(!(inputVal >= sliderMin && inputVal <= sliderMax)) {
continue;
}
// inputの値とスライダーの値が異なるとき
if(inputVal != sliderVal) {
slider[i].value(inputVal); // スライダーの値を変更
}
}
}
// スライダーの値を変更したときの処理
function sliderFunction() {
for (var i = 0; i < slider.length; i++) {
var inputVal = input[i].value();
var sliderVal = slider[i].value();
// スライダーの値とinputの値が異なるとき
if(inputVal != sliderVal) {
input[i].value(sliderVal); // inputの値を変更
}
}
}
【参考サイト】
コメントが承認されるまで時間がかかります。