https://teratail.com/questions/118697
学校で使用しているメールアドレスがメンテナンス中だったため、同じ内容の質問をさせて頂いています。
p5.jsを利用しています。
mouseClicked関数についてです。
最終的にはマウスクリックで点(アニメーション)が止まり、もう一度クリックすると動きだすプログラムを完成させたいです。
mouseClickedで機能させるには
①function setupの上でtrueかfalse指定
②ifで指定したものをfunction setupの中で呼びだして、{}の中にクリック後に行いたい処理(今回はy--等)
③function mouseClickedで呼び出した後の処理if (clicked)のあとに書く
と理解しています。
今回の目的ではないですが、
文字を増やすことは出来ました。
var x = 10, clicked = false function setup() { createCanvas(100, 100); } function draw() { if (clicked) { text("clicked", x, 10) y += 30 clicked = false } } function mouseClicked() { clicked = true }
ここからは、以下のプログラムについてですが、コメントの★の部分mouseClicked関数を制御している箇所だと私は思っています。
エラーは出ないですが、mouseClicked関数が理解しきれていなくて間違った階層になっているため以下ではまだ機能しないです。
今理解している①〜③の何処が違うのでしょうか?または、以下のプログラムの中ではなぜ機能しないのですか?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.16/p5.min.js"> /*p5.js使用*/ </script> </head> <body> <script> var x, y, stage, photo; //グローバル関数にしておく x = 350; y = 250; clicked = true; //はじめに指定★ function setup() { //はじめの1回だけ実行 createCanvas(640, 480); photo = loadImage("siro.jpg"); //背景 frameRate(100); //速さ10 ugoki = 1; } function draw() { if (ugoki <= 3) { //動き(ugoki)が3になるまで image(photo, 0, 0, width, height); //背景 line(50, 250, 350, 250); line(350, 250, 350, 100); line(350, 100, 250, 100); line(250, 100, 50, 250); //四角ライン fill(100); //三角形の背景(灰色) triangle(50, 250, 350, 250, x, y); //三角形 switch (ugoki) { case 1: //1回目の動き if (y >= 100) { if (clicked) { // if (clicked==true)と同じ★ y--; } break; ugoki++; //1→2 } case 2: //2回目の動き if (x >= 250) { x--; break; } ugoki++; //2→3 case 3: //3回目の動き if (x >= 50 && y <= 250) { x = x - 1.3; y++; break; } ugoki++; //3→4(上のifで3までの条件指定のため動か ない) } } function mouseClicked() { //クリックで呼び出される★ if (clicked) { clicked = false; } else { clicked = true; } } } </script> </body> </html>
回答1件
あなたの回答
tips
プレビュー