Hello guys,
I have a "small problem", I will try to explain ...
In short, I have a (Back) button, which closes the current frame, and returns to the previous one, until the window closes, but gives error when back to the previous frame.
I'm not knowing identify what may be occurring because the same command works when I use the ESC key, but does not work when you click the button that calls the same function.
Note: The function called in the programa Video02 is: retornaMenu() ( At this point what is the error )
The code below does not work, is missing parts, it is only to try to explain the problem.
First Program.
public static final class Video01 extends PApplet {
atualizaVar atualizaVarVideo01 = new atualizaVar(0,0);
ControlP5 cp5_Video01; //Cria objeto da biblioteca ControlP5
String nomeBotao;
XML xml_Video01; //Variável para carregar arquivo XML
ArrayList targetsVideo01 = new ArrayList();
int savedTimeVideo01, totalTimeVideo01 = 5000;
float pontoAtuVideo01 = 0;
int bar_sizeVideo01 = 15;
//Configurações Iniciais
void setup() {
size(displayWidth, displayHeight, JAVA2D); //Define tamanho da Janela, e forma de renderização
background(255); //Limpa tela
smooth(); //Suaviza serrilhado nos contornos do desenho
textFont(utilVar.fontA, 40); //Define e de fonte e Tamanho
fill(#1273C1); //Seta cor para o Texto
cp5_Video01 = new ControlP5(this); //Instancia objeto ControlP5 ( Biblioteca Gráfica )
criaObjetosVideo01();
rob.mouseMove(30, height-100);
savedTimeVideo01 = millis();
utilVar.tempoAutClick = true;
cursor(HAND);
}
//Loop enquanto rodar o programa
void draw() {
background(255);
textFont(utilVar.fontA, 40);
fill(#1273C1);
text("Selecione um Paciente para ver as opções de Vídeos...", 70, 40);
if (utilVar.tempoAutClick && focused){
if (Collections.disjoint(cp5_Video01.getMouseOverList(), targetsVideo01)==false) {
if(cp5_Video01.getMouseOverList().size()==1) {
controlP5.Controller controllerVideo01 = (controlP5.Controller)(cp5_Video01.getMouseOverList().get(0));
String posicoes = controllerVideo01.getLabel().toString();
String posBtnX = posicoes.substring(0,4);
String posBtnY = posicoes.substring(5,posicoes.length());
desenhaBarraVideo01(int(posBtnX)-17, int(posBtnY)+150, 5, 180);
}
} else {
savedTimeVideo01 = millis();
pontoAtuVideo01 = 0;
}
} else {
savedTimeVideo01 = millis();
pontoAtuVideo01 = 0;
}
if (!utilVar.executando2 && utilVar.usaLeapMotion){
//println("Leap Motion ativo - Video01");
atualizaVarVideo01.atualizaLeap(utilVar.opcaoLeapMotion);
rob.mouseMove(atualizaVarVideo01.xPos, atualizaVarVideo01.yPos);
} else {
atualizaVarVideo01.xPos = mouseX;
atualizaVarVideo01.yPos = mouseY;
}
}
void mousePressed() {
utilVar.pressMouse2 = true;
}
void keyPressed() {
if (key == ESC ) retornaMenu();
}
void retornaMenu() {
if (key == ESC ) {
key = 0;
utilVar.opcaoMenu = 0;
utilVar.pressMouse2 = false;
this.stop();
this.dispose();
frame.hide();
frame = null;
cp5_Video01 = null;
atualizaVarVideo01 = null;
}
}
void desenhaBarraVideo01(int pW, int pH, int perc, int pontoMax){
color c = color(0, 126, 255, 150);
if (pontoAtuVideo01 < pontoMax){
pontoAtuVideo01 = pontoAtuVideo01 + utilVar.tempoAutClickMouse; //Conforme calibrar variával ( tempoAutClickMouse ), muda o tempo do Click automático
fill (c);
rect(pW, pH+30, bar_sizeVideo01, pontoAtuVideo01*-1 );
} else {
pontoAtuVideo01 = 0;
cliCkMouse();
utilVar.pressMouse2 = true;
}
}
void criaObjetosVideo01() {
xml_Video01 = loadXML(PATHIMGPACIENTES + "/pessoas.xml");
XML[] children = xml_Video01.getChildren("pessoa");
int contBtn = 0;
for (int i = 0; i < children.length; i++) {
utilVar.idPessoa = children[i].getInt("id"); //Código da pessoa ( Paciente )
String nome = children[i].getString("nomePessoa");
int visualizar = children[i].getInt("visualiza");
//String name = children[i].getContent();
contBtn++;
adicionaPosBtnXY(i, 1, contBtn);
if (visualizar == 1) {
cp5_Video01.addButton("btn"+Integer.toString(utilVar.idPessoa))
.setPosition(utilVar.posBtnX, utilVar.posBtnY)
.setImages(loadImage(PATHIMGPACIENTES+"/"+utilVar.idPessoa+".jpg"), loadImage(PATHIMGPACIENTES+"/"+utilVar.idPessoa+"_1.jpg"), loadImage(PATHIMGPACIENTES+"/"+utilVar.idPessoa+"_2.jpg"))
.setValue(utilVar.idPessoa)
.setLabel(nf(utilVar.posBtnX,4) + "," + nf(utilVar.posBtnY,4))
.updateSize();
targetsVideo01.add(cp5_Video01.getController("btn"+Integer.toString(utilVar.idPessoa)));
}
}//for
}//função
void controlEvent(ControlEvent theControlEvent) {
if (utilVar.pressMouse2) {
//if (theControlEvent.controller().name() != "btnVoltar") {
utilVar.idPessoa = int(theControlEvent.controller().getValue());
utilVar.executando2 = true;
PApplet video02 = new Video02(); //add other animation
runSketch(new String[] { "**Vídeos**" }, video02);
//}
}
}
}
Second Program
static class Video02 extends PApplet {
atualizaVar atualizaVarVideo02 = new atualizaVar(0,0);
ControlP5 cp5_Video02; //Cria objeto da biblioteca ControlP5
GImageButton btnCronometroVideo02, btnLeapMotionVideo02, btnVoltar; //Botões
ButtonImg[] buttonsVideo02;
int savedTimeVideo02, totalTimeVideo02 = 5000;
float pontoAtuVideo02 = 0,
int bar_sizeVideo02 = 15, contBtn02 = 0, menu02 = 1, qtdeMenus02 = 1, menuAtivo02 = 1;
PVector v1_Video02;
String[][] botoesMenu02;
XML xml_Video02; //Variável para carregar arquivo XML
ArrayList targetsVideo02 = new ArrayList();
//Configurações Iniciais
void setup(){
size(displayWidth, displayHeight, JAVA2D); //Define tamanho da Janela, e forma de renderização
background(255); //Limpa tela
smooth(); //Suaviza serrilhado nos contornos do desenho
textFont(utilVar.fontA, 40); //Define e de fonte e Tamanho
fill(#1273C1); //Seta cor para o Texto
cp5_Video02 = new ControlP5(this); //Instancia objeto ControlP5 ( Biblioteca Gráfica )
criaObjetosVideo02();
utilVar.tempoAutClick = true;
savedTimeVideo02 = millis();
v1_Video02 = new PVector(0, 0);
rob.mouseMove(30, height-100);
cursor(HAND);
}
//Loop enquanto rodar o programa
void draw(){
background(255);
textFont(utilVar.fontA, 40);
fill(#1273C1);
text("Escolha uma Opção para selecionar o Vídeo...", 70, 40);
if (utilVar.tempoAutClick && focused){
if (Collections.disjoint(cp5_Video02.getMouseOverList(), targetsVideo02)==false) {
if(cp5_Video02.getMouseOverList().size()==1) {
controlP5.Controller controllerVideo02 = (controlP5.Controller)(cp5_Video02.getMouseOverList().get(0));
String posicoes = controllerVideo02.getLabel().toString();
String posBtnX = posicoes.substring(0,4);
String posBtnY = posicoes.substring(5,posicoes.length());
desenhaBarraVideo02(int(posBtnX)-17, int(posBtnY)+150, 5, 150);
}
} else {
savedTimeVideo02 = millis();
pontoAtuVideo02 = 0;
}
} else {
savedTimeVideo02 = millis();
pontoAtuVideo02 = 0;
}
if (!utilVar.executando3 && utilVar.usaLeapMotion){
atualizaVarVideo02.atualizaLeap(utilVar.opcaoLeapMotion);
rob.mouseMove(atualizaVarVideo02.xPos, atualizaVarVideo02.yPos);
} else {
atualizaVarVideo02.xPos = mouseX;
atualizaVarVideo02.yPos = mouseY;
}
}
void mousePressed(){
utilVar.pressMouse3 = true;
}
void keyPressed() {
if ( key == ESC ){
retornaMenu();
desabilitaDisp();
}
}
void retornaMenu(){
key = 0;
this.stop();
this.dispose();
frame.hide();
frame = null;
cp5_Video02 = null;
atualizaVarVideo02 = null;
utilVar.pressMouse3 = false;
utilVar.executando2 = false;
desabilitaDisp();
}
void desenhaBarraVideo02(int pW, int pH, int perc, int pontoMax){
color c = color(0, 126, 255, 150);
//if(frameCount % perc == 0){
if (pontoAtuVideo02 < pontoMax){
pontoAtuVideo02 = pontoAtuVideo02 + utilVar.tempoAutClickMouse; //Conforme calibrar variával ( tempoAutClickMouse ), muda o tempo do Click automático
fill (c);
rect(pW, pH, bar_sizeVideo02, pontoAtuVideo02*-1 );
} else {
pontoAtuVideo02 = 0;
cliCkMouse();
utilVar.pressMouse2 = true;
}
//}
}
void controlEvent(ControlEvent theControlEvent) {
if (utilVar.pressMouse3){
utilVar.opcaoLink = int(theControlEvent.controller().getValue());
String nomeBotaoVideo02 = theControlEvent.controller().getName();
if (nomeBotaoVideo02 == "btnVoltarVideo02"){
println("Volta 1");
key = ESC;
retornaMenu();
}
} else {
utilVar.imgPai = int(theControlEvent.controller().getStringValue());
utilVar.executando3 = true;
PApplet video03 = new Video03();
runSketch(new String[] { "***Vídeos***" }, video03);
}
}
}
void criaObjetosVideo02(){
xml_Video02 = loadXML(PATHIMGMENUVIDEOS + "/" + utilVar.idPessoa +"/pessoasMenuVideos.xml");
XML[] children = xml_Video02.getChildren("menuVideo");
botoesMenu02 = new String[children.length][2];
for (int i = 0; i < children.length; i++) {
int idButton = children[i].getInt("id");
String idImagem = children[i].getString("id");
int opcLink = children[i].getInt("opcaoLink");
String urlLink = children[i].getString("linkURL");
contBtn02++;
adicionaPosBtnXY(i, opcLink, contBtn02);
cp5_Video02.addButton("btn"+nf(idButton,6))
.setId(idButton)
.setPosition(utilVar.posBtnX, utilVar.posBtnY)
.setImages(loadImage(PATHIMGMENUVIDEOS+"/"+utilVar.idPessoa+"/"+idImagem+"_0.jpg"), loadImage(PATHIMGMENUVIDEOS+"/"+utilVar.idPessoa+"/"+idImagem+"_1.jpg"), loadImage(PATHIMGMENUVIDEOS+"/"+utilVar.idPessoa+"/"+idImagem+"_2.jpg"))
.setStringValue(idImagem)
.setValue(opcLink)
.setLabel(nf(utilVar.posBtnX,4) + "," + nf(utilVar.posBtnY,4))
.setVisible(false)
.updateSize();
targetsVideo02.add(cp5_Video02.getController("btn"+nf(idButton,6)));
}//for
cp5_Video02.addButton("btnVoltarVideo02")
.setPosition(2, 2)
.setImages(loadImage(PATHDADOS + "/voltar0.png"), loadImage(PATHDADOS + "/voltar1.png"), loadImage(PATHDADOS + "/voltar2.png"))
.updateSize();
targetsVideo02.add(cp5_Video02.getController("btnVoltarVideo02"));
}//função
}
I hope you can understand ...
Thanks for listening...