2017-02-07 19 views
0

Это мой генератор изображений, который работает с переключателями. Я хотел бы, чтобы кнопки переключения в новом окне. Я пытался использовать PApplet, но, похоже, ничего не показывает. Как добавить дополнительное окно только для переключателей?Создание нового окна для переходов Обработка (ControlP5)

import controlP5.*; 

PFont myFont; 

boolean showBackground = false; 
boolean showObjects = false; 
boolean showGrids = false; 
boolean showType = false; 

ControlP5 cp5; 

PImage[] objects = new PImage[30]; 
PImage[] grids = new PImage[29]; 
PImage[] backgrounds = new PImage[30]; 
PImage[] type = new PImage[30]; 

int currentBackgrounds; 
int currentGrids; 
int currentObjects; 
int currentType; 


void setup() { 
    size(1436, 847); 

    //load objects 
    for (int i=0; i<objects.length; i++) { 
    objects[i] = loadImage ("o" + i + ".png"); 
    } 
    //load grids 
    for (int i = 0; i < grids.length; i++) { 
    grids[i] = loadImage ("g" + i + ".png"); 
    } 
    //load backgrounds 
    for (int i = 0; i < backgrounds.length; i++) { 
    backgrounds[i] = loadImage("b" + i + ".jpg"); 
    } 
    //load type 
    for (int i = 0; i < type.length; i++) { 
    type[i] = loadImage ("t" + i + ".png"); 
    } 
    //setup UI 
String[] args = {"TwoFrameTest"}; 
SecondApplet sa = new SecondApplet(); 
PApplet.runSketch(args, sa); 

} 
public class SecondApplet extends PApplet { 

public void settings() { 
    size(200, 100); 
    } 
    // create a toggle and change the default look to a switch look 
    public void draw() { 
    cp5 = new ControlP5(this); 

    PFont font = createFont("EurostileLTStd-BoldEx2.otf", 10); 


    cp5.addToggle("showBackground") 
    .setColorForeground(color(255, 255, 255)) 
    .setColorBackground(color(255, 255, 255)) 
    .setColorActive(color(255, 0, 0)) 
    .setPosition(40, 250) 
    .setFont(font) 
    .setSize(20, 20) 
    .setValue(false) 
    .setMode(ControlP5.SWITCH); 

    cp5.addToggle("showObjects") 
    .setPosition(40, 400) 
    .setFont(font) 
    .setSize(50, 20) 
    .setValue(false) 
    .setMode(ControlP5.SWITCH); 

    cp5.addToggle("showGrids") 
    .setPosition(40, 600) 
    .setFont(font) 
    .setSize(50, 20) 
    .setValue(false) 
    .setMode(ControlP5.SWITCH); 

    cp5.addToggle("showType") 
    .setPosition(40, 800) 
    .setFont(font) 
    .setSize(50, 20) 
    .setValue(false) 
    .setMode(ControlP5.SWITCH); 
    } 
} 

void mousePressed() { 
    //next img 
    currentObjects = currentObjects + int(random(10)); 
    currentGrids = currentGrids + int(random(10)); 
    currentType = currentType + int(random(10)); 
    currentBackgrounds = currentBackgrounds + int(random(10)); 

    if (currentObjects >= objects.length) { 
    currentObjects = 0; 
    } 
    if (currentGrids >= grids.length) { 
    currentGrids = 0; 
    } 
    if (currentType >= type.length) { 
    currentType = 0; 
    } 
    if (currentBackgrounds >= backgrounds.length) { 
    currentBackgrounds = 0; 

    } 
} 

void draw() { 
    //clear frame 
    background(211);// 

    if (showBackground==true) { 
    image(backgrounds[currentBackgrounds], 0, 0, 1436, 847); // b 
    } 
    if (showGrids==true) { 
    image(grids[currentGrids], 0, 0, 1436, 847); // g 
    } 
    if (showObjects==true) { 
    image(objects[currentObjects], 0, 0, 1436, 847); // o 
    } 
    if (showType==true) { 
    image(type[currentType], 0, 0, 1436, 847); // o 
    } 
} 
+0

В процессе обработки ** Файл> Примеры> Библиотеки с добавленными правами> ControlP5> extra> ControlP5frame **. В этом примере вы можете увидеть, что упоминается «runSketch» ​​Кевин, но также и то, как используется «' plugTo() '' ', подключить элементы управления из апплета' '' ControlFrame'' в свойствах из первого апплета. –

+0

Вы когда-нибудь поняли это? –

+0

Nope никогда не понял это. –

ответ

0

Вы будете иметь, чтобы вызвать функцию runSketch() для второго окна, чтобы выскочить и быть свой собственный эскиз обработки. Что-то вроде этого:

void setup() { 
    String[] args = {"TwoFrameTest"}; 
    SecondApplet sa = new SecondApplet(); 
    PApplet.runSketch(args, sa); 
} 

void settings() { 
    size(300, 100); 
} 

void draw() { 
    background(0); 
    fill(255); 
    text("Hello world!", 50, 40); 
} 


public class SecondApplet extends PApplet { 

    public void settings() { 
    size(200, 200); 
    } 

    public void draw() { 
    background(255); 
    fill(0); 
    text("Hello world!", 50, 40); 
    } 
} 
+0

, но тогда переключатели не подключаются к другому файлу вправо? –

+0

@NaomivanMaasakkers no, если вы не используете функциональность ** plugTo ** ControlP5 ** –

+0

@NaomivanMaasakkers Вы можете попробовать передать экземпляр 'SecondApplet' (в моем коде это переменная' sa') в конструктор 'ControlP5' или перемещать' ControlP5 ' 'материал в класс« SecondApplet ». –