前提・実現したいこと
processing初心者です。
processingでJSONファイルをランダムに一行ずつ表示させたいです。
特定の列を全行表示させることには成功しましたが、一行ずつ表示できず困っています。
画像は現在の表示画面です。
ドラセナ、オリーブ、パキラ...と一つずつ順番に表示させたいです。
1回再生するごとにカウンター(変数countでカウント)を1増やし、countの値が配列の長さ以上になったらカウンターをリセット(countの値を0)。こうすることで、繰り返し単語が順に表示される。という方法でやろうとしましたができませんでした。
JSONファイルです。(観葉植物の名前、値段、買った日付)
[ { "id": 1, "date": "2020-10-28T08:09:06.220Z", "yen": 12584, "name": "ドラセナ" }, { "id": 2, "date": "2020-10-28T08:57:41.717Z", "yen": 2000, "name": "オリーブ" }, { "id": 3, "date": "2020-10-29T08:15:33.598Z", "yen": 2100, "name": "パキラ" }, { "id": 4, "date": "2020-10-29T08:30:47.760Z", "yen": 1499, "name": "カポック(シェフレラ)" }, { "id": 5, "date": "2020-10-30T07:22:10.030Z", "yen": 1298, "name": "エバーフレッシュ " }, { "id": 6, "date": "2020-10-30T07:22:40.745Z", "yen": 3820, "name": "サンスベリア" }, { "id": 7, "date": "2020-10-30T07:23:21.197Z", "yen": 3820, "name": "フィカス・ウンベラータ" }, { "id": 8, "date": "2020-10-30T07:24:08.782Z", "yen": 1400, "name": "ゲッケイジュ" }, { "id": 9, "date": "2020-11-10T05:43:37.586Z", "yen": 10164, "name": "カネノナルキ" }, { "id": 10, "date": "2020-11-10T05:44:43.239Z", "yen": 4099, "name": "ポトス" }, { "id": 11, "date": "2020-11-24T01:57:56.665Z", "yen": 1017, "name": "アイビー" }, { "id": 12, "date": "2020-11-24T02:00:16.532Z", "yen": 4099, "name": "シュガーバイン" }, { "id": 13, "date": "2020-11-24T02:09:09.418Z", "yen": 2343, "name": "ハートカズラ" }, { "id": 14, "date": "2020-11-24T02:17:37.956Z", "yen": 2900, "name": "ワイヤープランツ" }, { "id": 15, "date": "2020-11-24T02:21:18.713Z", "yen": 6080, "name": "ガジュマル" } ]
オブジェクトでは配列のように行を指定することはできないのでしょうか?
難しければcsvファイルで再挑戦してみようと思います。
発生している問題・エラーメッセージ
The type of the expression must be an array type but it resolved to String
該当のソースコード
Film[] films; int count = 0; void setup() { size(700, 700); frameRate(3); JSONArray filmArray = loadJSONArray("plants.json"); films = new Film[filmArray.size()]; for (int i = 0; i < films.length; i++) { JSONObject o = filmArray.getJSONObject(i); films[i] = new Film(o); } } void draw() { background(0); for (int i = 0; i < films.length; i++) { int x = i*100 + 100; int y = i*20 + 100; films[i].display(100, y); } //int x = int(random(width)); //int y = int(random(height)); } class Film { String name; String date; int yen; int id; Film(JSONObject f) { name = f.getString("name"); date = f.getString("date"); yen = f.getInt("yen"); id = f.getInt("id"); } void display(int x, int y) { float ratingGray = map(yen, 1000, 10000, 102, 255); pushMatrix(); translate(x, y); //rotate(-QUARTER_PI); fill(ratingGray); text(name[count], 0, 0,400,20); count++; if(count >= films.length) count = 0; popMatrix(); } }
試したこと
Stringで新たに宣言を試そうとしましたが、どの箇所に記述していいか分からず、、、
そもそもオブジェクトでカウントを使うのが間違っているのでしょうか?
ご指導よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
processing ver3.5.4を使用
以下のサイトを参考にしました。
b-04 配列を使う - Proessing 学習ノート
https://processing.org/reference/text_.html
JSONファイルを読み込むには | 自己啓発。人生について考える
回答2件
あなたの回答
tips
プレビュー