Processing : Créer une seconde fenêtre

De Centre de Ressources Numériques - Labomedia
Révision de 3 novembre 2017 à 20:37 par Mushussu (discussion | contributions)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Processing 3

void settings() {
  size(200, 400);
  //fullScreen(2);
}

void setup() {
  PApplet.runSketch(platformNames, new SecondApplet());
}

void draw() {
  background(0);
  fill(255, 0, 0);
  ellipse(width / 2, height / 2, 100, 100);
}     

public class SecondApplet extends PApplet {

  public void settings() {
    size(400, 200);
    //fullScreen(1);
  }

  public void setup() {
    surface.setTitle("Titre de ma seconde fenetre");
  }

  public void draw() {
    background(255);
    fill(0, 255, 0);
    ellipse(width / 2, height / 2, 100, 100);
  }
}

Processing 2

Comment créer une seconde fenêtre et comment interagir avec elle :

import java.awt.*;

PFrame f;
autreApplet s;

boolean drapeau;

void setup() {
  size(200, 200);
  s = new autreApplet();
  f = new PFrame(s);
  drapeau = false;
}

void draw() {
  background(255, 0, 0);
  if (s.temoin != drapeau) {
    drapeau = s.temoin;
  }
  if (drapeau) {
    fill(0, 255, 0);
  } else {
    noFill();
  }
  rect(50, 50, 100, 100);
}

void keyPressed() {
  if (key == 't') {
    f.setSize(600, 600);
  }
  if (key == ' ') {
    if (f.isShowing()) {
      f.setVisible(false);
    } else {
      f.setVisible(true);
    }
  }
}

void mousePressed() {
  if ((mouseX > 50) && (mouseX < 150) && (mouseY > 50) && (mouseY < 150)) {
    drapeau = !drapeau;
    s.temoin = !s.temoin;
  }
}

public class PFrame extends Frame {
  public PFrame(autreApplet autre) {
    setBounds(100, 100, 200, 200);
    add(autre);
    autre.init();
    setVisible(true);
  }
}

public class autreApplet extends PApplet {
  boolean temoin;

  public void setup() {
    size(200, 200);
    temoin = false;
  }

  public void draw() {
    background(0, 0, 255);
    if (temoin) {
      fill(0, 255, 0);
    } else {
      noFill();
    }
    rect(50, 50, 100, 100);
  }

  void mousePressed() {
    if ((mouseX > 50) && (mouseX < 150) && (mouseY > 50) && (mouseY < 150)) {
      temoin = !temoin;
    }
  }
}

Une deuxième méthode issue du forum Processing :

static final void main(final String[] args) {
  final String sketch = Thread.currentThread()
    .getStackTrace()[1].getClassName();

  main(sketch, args);

  final Class[] nested;
  try {
    nested = Class.forName(sketch).getClasses();
  }
  catch (final ClassNotFoundException cause) {
    throw new RuntimeException(cause);
  }

  println(nested);
  println();

  for (int i = 0, ii = max (0, nested.length-2); i != ii; ++i)
  try {
    main(nested[i].getName(), args);
  }
  catch (final Exception cause) {
    println(nested[i] + " isn't a PApplet or isn't public static!");
  }
}

void setup() {
  size(600, 400, P2D);
  smooth(8);
  noLoop();
  background((color) random(#000000));
}

public static final class MyFrame extends PApplet {
  void setup() {
    size(300, 200, JAVA2D);
    noLoop();
    println("MyFrame");
  }

  void draw() {
    background(0);
  }
}

public static final class MyApp extends PApplet {
  void setup() {
    size(300, 200, JAVA2D);
    noLoop();
    println("MyApp");
  }

  void draw() {
    background(255);
  }
}