b-02 反応させる(マウス、キーボードからの入力に) - Proessing 学習ノート
keyPressed() {...} キーが押されたときに1回だけ {...} の中を実行する
こちらですね。
loadImage
は画像を読み込む命令であって、画像を表示(描画)する命令ではありません。
一度「画像を使う」のところに戻って確認してください。
a-07 画像を使う - Proessing 学習ノート
loadImage() / Reference / Processing.org
image() / Reference / Processing.org
imageMode() / Reference / Processing.org
Processing
1PImage img;
2float x = 0.0;
3float speed = 1.0;
4
5void setup() {
6 size(400, 400);
7
8 imageMode(CENTER);
9 img = loadImage("https://teratail-v2.storage.googleapis.com/uploads/avatars/u20/200162/RFuaxO4Y_thumbnail.jpg");
10}
11
12void draw() {
13}
14
15void keyPressed() {
16 background(204);
17 x += speed;
18
19 //ellipse(x, height/2, 60, 60);
20 image(img, x, height/2);
21}
「キーが押されたときに1回だけ実行する」を説明するため(キーを押さない限りなにも出ない)このような書き方になっているのでしょうが、本来は↓の(描画にかかわるものはdraw
内に書く)ような書き方が望ましいです。
Processing
1PImage img;
2float x = 0.0;
3float speed = 1.0;
4
5void setup() {
6 size(400, 400);
7
8 imageMode(CENTER);
9 img = loadImage("https://teratail-v2.storage.googleapis.com/uploads/avatars/u20/200162/RFuaxO4Y_thumbnail.jpg");
10}
11
12void draw() {
13 background(204);
14
15 //ellipse(x, height/2, 60, 60);
16 image(img, x, height/2);
17}
18
19void keyPressed() {
20 x += speed;
21}
現状「エンターキー」でなくても(何キーでも)動いてしまいますが、キーを区別するような場合はkey
やkeyCode
を使用します。
Processing
1void keyPressed() {
2 if (key == ENTER || key == RETURN) {
3 x += speed;
4 }
5}
key / Reference / Processing.org
keyCode / Reference / Processing.org
画像が同じファイル内に入ってなかったので入れてみたが何も出てこない
フォルダ内ですね。
Processing IDEに画像をドラッグ&ドロップすると、画像をコピーして配置してくれるので楽です^^
デバッグする場合はまず「画像を単に表示するだけ」のように、「どこまでは問題ないのか」を確認するようにするといいです。
それができれば「画像の読み込み」・「画像の表示」まではOKだったということになります。
それを書く過程(私だってすべて覚えているわけではないので「どうやるんだっけな?」とggります)で、image()
がないことに(自力で)気が付いたでしょう^^