0

このエラーが発生します:

タイプt33.Psicodeliaのメソッドpintar()は、引数(int、int、int、int、int、int)には適用できません。

どうすればこれを解決できますか?

2つのクラスとメインタブがあります。

クラス1

public class Logica {
  Psicodelia miPsicodelia;


  public Logica() {
  }

  public void pintar() {
    miPsicodelia.pintar(width/2, height/2, height/4, 0, 0, 1);
    miPsicodelia.kaleidouno(posX, posY, rad, ang, depth, tam1);
  }  

  public void pressed() {
    miPsicodelia.pressed();
  }
}

クラス2

public class Psicodelia {
  private float anguloGrande;
  private int numBolas, contador;


  public Psicodelia() {
    stroke(255);   
    this.anguloGrande = 0.0;
    this.numBolas = 7;
  }


  public void pintar() {
    //fill((int)random(0, 255), (int)random(0, 255), (int)random(0, 255));
    fill(255, 255, 0, (int)random(20, 100));
    pintar(width/2, height/2, height/4, 0, 0, 1);
    anguloGrande += .02; //velocidad de rotacion
  }

  public void kaleidouno(float posX, float posY, float rad, float ang, int depth, float tam) { //pinteme las bolas en la pos posX, posY, reciba un float de radianes y de angulos, y por ultimo un int de profundidad
    if (depth < contador) {
      tam=(int)random(0.5, 1.5);
      float anguloPeq = TWO_PI/numBolas;
      for (int i=0; i < numBolas; i++) {
        float nuevoRad = rad/2; //distancia y tamaño de las bolas entre ellas
        float nuevoAng = ang + i*anguloPeq - anguloGrande;
        float X = cos(nuevoAng)*rad + posX;
        float Y = sin(nuevoAng)*rad + posY;
        pintar(X, Y, nuevoRad, nuevoAng, depth + 1, 1);
      }
    }
    else  if (rad < 2) { 
      ellipse(posX, posY, 2.0*tam, 2.0*tam);
    }
    else { 

      ellipse(posX, posY, rad*2.0, rad*2.0);
    }
  }

  public void pressed() {
    contador++;
    if (contador >= 3) { 

      contador--;
    }
  }



  float getPosX () {
    return posX ;
  }


  float getPosY () {
    return posY ;
  }
}


// and the main tab


Logica miLogica;

//================================================================

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

miLogica= new Logica();

}

//================================================================

void draw() {
  background(0);
 miLogica.pintar();

}

//================================================================

void mousePressed() {
miLogica.pressed();
}
//================================================================
4

2 に答える 2

3

メソッドを呼び出しました

Psicodelia miPsicodelia;
miPsicodelia.pintar(width/2, height/2, height/4, 0, 0, 1);

ただし、Psicodeliaクラスには次のpintarメソッドしかありません。

public void pintar();

あなたが行った方法でそれを呼び出すには、メソッドに目的のpintar()パラメーターを与える必要があります。

例えば:

public void pintar(int a, int b, int c, int d, int e, int f){
    // do whatever you want here
}

PS: miPsicodelia オブジェクトをどこでもインスタンス化しますか? そうでない場合、これはあなたに NullPointerException.

于 2012-09-06T07:22:31.827 に答える
1

まあ、私が何かを見逃していない限り、あなたのpublic void pintar()メソッドはパラメータなしで宣言されているので、それを呼び出すことはできません。必要な数とタイプのパラメーターで宣言する必要があります。

public void pintar(int para1, int para2, int para3, int para4, int para5, int para6)
{ 
   //Do something with the parameters.
}
于 2012-09-06T07:25:42.437 に答える