2012-09-12 23 views
-1

我使用controlP5处理图形用户界面,我需要计数器里面draw()功能。处理:我需要计数器内部绘图功能

我知道draw()函数连续运行,每个for循环都显示在最后一步。

我需要看看每一步。由于draw(),我有两个输入,而且我只能输入一次。我需要draw()函数来等待输入或类似的东西。

import controlP5.*; 

Textarea myTextareaMI; 
Textarea myTextareaVI; 
Textarea my; 

String textValueBODOVI = ""; 
String textValueZVANJE = ""; 
boolean mi=false, vi=false; 
int i=1; 


ControlP5 cp5; 

int myColor = color(255); 

int c1, c2; 

float n, n1; 



void setup() { 
    size(320, 480); 
    noStroke(); 
    PFont font = createFont("arial", 20); 
    cp5 = new ControlP5(this); 
    cp5.addButton("NOVA PARTIJA") 
    .setValue(0) 
     .setPosition(0, 0) 
     .setSize(480, 19) 
      ; 
    cp5.addButton("PONISTI ZADNJI UNOS") 
    .setValue(100) 
     .setPosition(0, 20) 
     .setSize(480, 19) 
      ; 

    cp5.addBang("MI") 
     .setPosition(60, 80) 
     .setSize(60, 20) 
      .getCaptionLabel().align(ControlP5.CENTER, ControlP5.CENTER) 


      ; 
    cp5.addBang("VI") 
     .setPosition(123, 80) 
     .setSize(60, 20) 
      .getCaptionLabel().align(ControlP5.CENTER, ControlP5.CENTER) 


      ; 
    cp5.addTextfield("BODOVI") 
    .setPosition(60, 41) 
     .setSize(60, 20) 
     .setFont(font) 
      .setColor(color(255, 0, 0)) 
       ; 
    cp5.addTextfield("ZVANJE") 
    .setPosition(123, 41) 
     .setSize(60, 20) 
     .setFont(font) 
      .setColor(color(255, 0, 0)) 
       ; 


    ; 
    int l=0; 
    for (int i=1;i<11;i++,l=l+22) { 
    my = cp5.addTextarea("MIVI"+i).setPosition(60, 101+l).setSize(123, 20).setFont(createFont("arial", 14)) 
     .setLineHeight(14) 
     .setColor(color(128)) 
      .setColorBackground(color(255, 100)) 
      .setColorForeground(color(255, 100)) 


       ; 
    } 


} 
public void bang() { 
} 
void draw() { 
delay(15); 
    background(myColor); 
    myColor = lerpColor(c1, c2, n); 
    n += (1-n)* 0.1; 
    funkcija(); 
    } 
void funkcija(){ 
    int suma= 0; 
    for(i=1;i<=11;i++){ 
    int brojmi=0; 
    textValueZVANJE = cp5.get(Textfield.class, "ZVANJE").getText(); 
    textValueBODOVI = cp5.get(Textfield.class, "BODOVI").getText(); 
    int bodovi = int(textValueBODOVI); 
    int zvanje = int(textValueZVANJE); 

    int mii, vii; 
    if(bodovi>0){ 
    if (mi) { 
     println("mi"+brojmi+i); 
     int ukupno = 162 + zvanje;  
     vii = ukupno - bodovi; 
     cp5.get(Textarea.class, "MIVI"+i).setText(textValueBODOVI+"   "+vii); 
     mi=false; 
     vi=false; 
     cp5.get(Textfield.class, "BODOVI").clear(); 
     cp5.get(Textfield.class, "ZVANJE").clear(); 
     loop(); 

    } 
    if (vi) { 
     println("vi"+i); 
     int ukupno = 162 + zvanje; 
     mii = ukupno - bodovi; 
     cp5.get(Textarea.class, "MIVI"+i).setText(mii+"   "+textValueBODOVI); 
     mi=false; 
     vi=false; 
     cp5.get(Textfield.class, "BODOVI").clear(); 
     cp5.get(Textfield.class, "ZVANJE").clear(); 
     } 
} 
     brojmi++; } 
} 


public void controlEvent(ControlEvent theEvent) { 
    mi = theEvent.getController().getName().equals("MI"); 
    vi = theEvent.getController().getName().equals("VI"); 
} 
public void clear() { 
    cp5.get(Textfield.class, "BODOVI").clear(); 
    cp5.get(Textfield.class, "ZVANJE").clear(); 
} 

回答

0

嗯,我不知道我是否有你的问题。 如果你的问题是:“我需要draw()函数来等待输入或类似的东西。”,然后使用一个标志(布尔值)来决定是否绘制。当用户输入内容时,将true赋予该值。

所以,你的代码应该是:

void draw() { 
    // put the code you want to run anyways here... 
    // code 
    // code 
    if (hasUserInput) { 
     // here write the code you should wait to execute 
    } 
}