Java:如何避免display()和write(pdf)之间的代码重复

时间:2016-02-25 15:43:46

标签: java oop processing

我在一个类中有两个函数

void display()

void write(PGraphics pdf)

我使用display()向屏幕显示元素。有没有办法调用display()中的代码,以便我不必在write(pdf)内再次写出每个函数?例如 line(0,0,100,100)pdf.line(0,0,100,100)

3 个答案:

答案 0 :(得分:1)

您可以通过绘制到PGraphics图像而不是直接绘制到屏幕来执行此操作,然后将该图像绘制到屏幕上。这样您就可以将其换成PDF PGraphics而无需更改任何代码。像这样:

PGraphics pg;
PGraphics pdf;

boolean usePdf = false;

void setup() {
  size(100, 100);
  pg = createGraphics(width, height);
  pdf = //whatever
}

void draw(){
   if(usePdf){
      display(pdf);
   }
   else{
      display(pg);
      image(pg, 0, 0);
   }
}

void display(PGraphics g) {
  g.beginDraw();
  g.background(100);
  g.stroke(255);
  g.line(20, 20, mouseX, mouseY);
  g.endDraw();
}

答案 1 :(得分:0)

如果你想使用所有代码jsut在里面调用它(但我想你不想这样做)

你应该折射代码并将你想要在两种方法中使用的东西放入它自己的方法中,如:

private void hopefullyIGetABetterName(...) {...}

您可以在display内以及write内调用此方法 我希望这有帮助,否则随便问: - )

答案 2 :(得分:0)

  • 提取绘图到屏幕和PDF之间的通用界面(让我们称之为Drawable
  • 实施Drawable以便绘制到屏幕上。
  • 实施Drawable以绘制到PDF
  • 创建一个采用该界面的draw方法。
  • 更改display()以致电draw(screenDrawable)
  • 更改write(...)以致电draw(pdfDrawable)