Things to Feel Fun

見て感じる楽しいこと

【Processing】controlP5の使い方

Processingでボタンやスライダーを表示するためのライブラリ『controlP5』ですが、Processing 3への対応はまだされていないようです。

ですが、実際に使えるのか試してみました。使い方の確認もしたいと思います。

コード例

import controlP5.*;

ControlP5 cp5;

String filenameA = null;
String filenameB = null;

void setup(){
  size(300,200);
  cp5 = new ControlP5(this);
  
  cp5.addButton("fileA")
    .setLabel("File A")
    .setPosition(50,50)
    .setSize(60,30);
    
  cp5.addButton("fileB")
    .setLabel("File B")
    .setPosition(120,50)
    .setSize(60,30);
    
  cp5.addButton("mergeFiles")
    .setLabel("Create")
    .setPosition(50,90)
    .setSize(130,30);
}

void draw(){
}

void fileA(){
  println("fileA clicked");
}

void fileB(){
  println("fileB clicked");
}

void mergeFiles(){
  println("mergeFiles clicked");
  exit();
}

実行

上のコードを実行した結果が以下です。

f:id:tekt:20150901131419p:plain

解説

まずcontrolP5を初期化し、ボタンを配置します。

cp5 = new ControlP5(this);

 cp5.addButton("fileA")
    .setLabel("File A")
    .setPosition(50,50)
    .setSize(60,30);

3行目以降の意味は、以下のような意味です。

ボタンを「fileA」という名前(ID)で追加し、ラベルは「File A」、位置は (x: 50, y: 50)、サイズは 60px x 30px

これを理解していれば、他のボタンも同じように追加できます。

クリックイベント

さて、実行してみるとわかりますが、クリックしても何も動きません。

そこで以下のコードを追加します。

void fileA(){
  // クリックされた時の処理
}

この関数名は、先ほど追加したボタンの名前(ID)と一致します。

あとは、background(255,0,0)とかを追加すれば、クリックされたことが分かります。