質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

1079閲覧

Processing 1秒ごとにデータの値を切り替えたい

RY54828

総合スコア2

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

1グッド

0クリップ

投稿2022/10/04 05:33

編集2022/10/04 05:35
読み込んだcsvファイルのデータを1秒たつごとに切り替わるようにしたい (データa -1秒- データb -1秒- データc のような感じにしたいです。) ### 発生している問題 今実行している処理だと一気にすべてのデータが同じ場所に表示されてしまうため重なり合って見えなくなってしまいます。 ### 該当のソースコード processing Table table; void setup() { table = loadTable("東京の気温と湿度2021.csv"); PFont font = createFont("Osaka", 12); textFont(font); size(1000, 1000); colorMode(HSB, 360, 100, 100, 100); smooth(); noStroke(); background(0, 0, 100); for (int i = 2; i < table.getRowCount(); i++) { print(table.getString(i, 0)); print(", "); print(table.getString(i, 1)); print("-"); print(table.getString(i, 4)); print(", "); } for (int i = 3; i < 5; i++) { fill(0, 0, 0); textSize(70); text(table.getString(i, 1), 300, 350); } for (int i = 3; i < 5; i++) { fill(0, 0, 0); textSize(70); text(table.getString(i, 4), 300, 600); } } void draw() { for (int i = 5; i < table.getRowCount(); i++) { fill(0, 0, 0); textSize(100); text(table.getString(i, 0), 190, 200); } for (int i = 5; i < table.getRowCount(); i++) { fill(0, 0, 0); text(table.getString(i, 1), 375, 475); } for (int i = 5; i < table.getRowCount(); i++) { fill(0, 0, 0); text(table.getString(i, 4), 375, 725); } }
TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

今実行している処理だと一気にすべてのデータが同じ場所に表示されてしまうため重なり合って見えなくなってしまいます。

drawは(デフォルトでは)1秒間に60回呼ばれています。
その瞬間に表示したいものだけを、描画するようにします(パラパラマンガのイメージ)
パラパラマンガ - Wikipedia

これはProcessingの基本なので、しっかりと理解してください。
アニメーションしよう | プログラミングとゲームの杜

読み込んだcsvファイルのデータを1秒たつごとに切り替わるようにしたい

フレームレート(drawが1秒間に何回呼ばれるか)を変えていいなら、frameRate(1);とするのが手っ取り早いです。
frameRate() / Reference / Processing.org

Processing

1Table table; 2int rowIndex = 1; // いま表示している行のインデックス 3 4void setup() { 5 size(1000, 1000); 6 textFont(createFont("Osaka", 12)); 7 textSize(100); 8 frameRate(1); // 1秒間に1回描画(=1秒ごと) 9 //frameRate(2); // 1秒間に2回描画(=0.5秒ごと) 10 //frameRate(0.5); // 1秒間に0.5回描画(=2秒ごと) 11 12 table = loadTable("東京の気温と湿度2021.csv"); 13} 14 15void draw() { 16 background(255); 17 fill(0); 18 19 text(table.getString(rowIndex, 0), 190, 200); 20 text(table.getString(rowIndex, 1), 375, 475); 21 text(table.getString(rowIndex, 4), 375, 725); 22 23 if (rowIndex < table.getRowCount() - 1) { 24 rowIndex++; 25 } else { 26 // 最後まで行ったらどうするのか? 27 //rowIndex = 1; // 最初に戻る 28 //noLoop(); // すべての描画を止める 29 //なにもしない // 最後の行のまま描画継続 30 } 31}

フレームレートを変えたくない場合(ほかの描画もある等)は、frameCountの剰余を使うのが常套手段です。
frameCount / Reference / Processing.org
% (modulo) / Reference / Processing.org

Processing

1Table table; 2int rowIndex = 1; 3 4void setup() { 5 size(1000, 1000); 6 textFont(createFont("Osaka", 12)); 7 textSize(100); 8 //frameRate(60); 9 10 table = loadTable("東京の気温と湿度2021.csv"); 11} 12 13void draw() { 14 background(255); 15 // ほかに何か描画があるとして 16 17 fill(0); 18 text(table.getString(rowIndex, 0), 190, 200); 19 text(table.getString(rowIndex, 1), 375, 475); 20 text(table.getString(rowIndex, 4), 375, 725); 21 22 // frameRateはデフォルト60 23 // frameCountが60増えるごと(=1秒ごと)にrowIndexを1増やす 24 if (frameCount % 60 == 0) { 25 //if (frameCount % 30 == 0) { // 30増えるごと(=0.5秒ごと) 26 //if (frameCount % 120 == 0) { // 120増えるごと(=2秒ごと) 27 28 if (rowIndex < table.getRowCount() - 1) { 29 rowIndex++; 30 } else { 31 // 最後まで行ったらどうするのか? 32 //rowIndex = 1; // 最初に戻る 33 //noLoop(); // すべての描画を止める 34 //なにもしない // 最後の行のまま描画継続 35 } 36 } 37}

投稿2022/10/04 09:13

TN8001

総合スコア9321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RY54828

2022/10/04 17:39

ご回答ありがとうございます。 やりたいと考えていたことがそのとおりに実行できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問