Harus dapat melihat persegi panjang yang digambar dalam Pemrosesan menggunakan loop for

Untuk sebuah proyek saya membuat kode yang membuat wallpaper komputer dengan ikon. Satu Ikon yang saya atur untuk menggambar bilah pemuatan saat diklik (batalkan mousePressed). Saya ingin dapat melihat persegi panjang (bilah pemuatan) dimulai di lokasi yang ditentukan menggunakan RectMode(CORNER) dan lebarnya bertambah setiap beberapa detik hingga bilah sekitar 3/4 penuh lalu berhenti dan tetap.

tolong beri saran
ini akan menggambar bilah yang sudah selesai tetapi saya ingin melihat setiap kenaikan selama beberapa detik

void setup(){
  size(800,600);
}

void mousePressed(){
  if (mousePressed && mouseX>width/4 && mouseX<width-width/4 && mouseY>height/3 && mouseY<height-    height/3){
  rectMode(CORNER);
  noStroke();
  fill(0,180,0,180);
  for( int r = 0; r <= 7; r++){
    if (r == 1)
      i = 50;
    rect(width/2-348,height/2-35,i,height/8-4);
    if (r == 2)
      i = 150;
    rect(width/2-348,height/2-35,i,height/8-4);
    if (r == 3)
      rect(width/2-348,height/2-35,i,height/8-4);
    i = 250;
    if (r == 4)
      rect(width/2-348,height/2-35,i,height/8-4);
    i = 350;
    if (r == 5)
      rect(width/2-348,height/2-35,i,height/8-4);
    i = 450;
    if (r == 6)
      rect(width/2-348,height/2-35,i,height/8-4);
    i = 550;
    if (r == 7)
      rect(width/2-348,height/2-35,i,height/8-4);
    i = 650;
} 
}

}

person user3520918    schedule 10.04.2014    source sumber
comment
maaf dihapus yang lama tidak melihat tombol edit Saya anggota baru   -  person user3520918    schedule 11.04.2014


Jawaban (2)


Menggunakan loop dalam pemrosesan yang ditentukan oleh fungsi loop() dan dapat dihentikan oleh noLoop() juga saya menggunakan frameCount (berisi jumlah frame yang telah ditampilkan sejak program dimulai - setiap menjalankan fungsi draw()) untuk menghitung persentase bilah kemajuan yang dimuat dan untuk berhenti memuat pada 3/4 sesuai keinginan.

boolean loading = false;
int fillX = 0;

void setup()
{
  size(300,300);
  background(0);
  noLoop();  
}

void draw()
{
  stroke(255);
  fill(0);
  rect(48, 137, 204, 25);
  noStroke();
  fill(255);
  rect(51, 140, fillX, 20);

  if(loading == true)
  {       
    fillX = ((frameCount%301) / 3 * 2);    
    if(frameCount%(300*0.75) == 0)
    {
      loading = false;
      noLoop();
      frameCount = 0;
    }
  }
}

void mousePressed() {
  loading = true;
  loop();
}

RectMode(CORNER) adalah mode default sehingga tidak perlu menentukannya kecuali Anda menggunakan mode berbeda dalam proyek.

person Majlik    schedule 11.04.2014

Apakah Anda ingin melakukan hal seperti ini?

int time, myWidth;
boolean loading;

void setup(){
  size(800,600);
  loading = false;
  myWidth = 0;
}

void draw(){
  drawLoadingBar();
}

void drawLoadingBar(){

  if(myWidth < width/3){
    if(loading && millis()-time > 1000){
      rect(20, height/2, myWidth, 30);
      myWidth = myWidth + 10;          
      time = millis();
    }
  }

}

void mousePressed(){
  if(loading == false){
      time = millis();  
      loading = true;
  }
}

Kode ini bekerja dengan menambah lebar bilah sebesar 10 setiap detik setelah klik mouse pertama.

person Jose Gonzalez    schedule 11.04.2014