处理中两个小程序的字体

时间:2016-10-26 11:33:02

标签: fonts processing

如何更改第二个applet上的字体?我试图在settings()或setup()中更改它,但它只影响第一个屏幕上的字体,有时我有一个错误NullPointException。感谢。

PFont font;

void setup() {
  String[] args = {"TwoFrameTest"};
  SecondApplet sa = new SecondApplet();
  PApplet.runSketch(args, sa);
  font = loadFont("Arial-Black-30.vlw");
  textFont(font);  
}
void settings() {  
  size(300, 100);
}
void draw() {
  background(0);
  fill(255);
  text("Hello world!",50,40);
}   


public class SecondApplet extends PApplet {

  public void settings() {
    size(200, 200);

  }
  public void draw() {
    background(255);
    fill(0);  
    text("Hello world!",50,40);

  }
}

1 个答案:

答案 0 :(得分:0)

您发布的代码从不设置第二个草图的字体。它只设置第一个草图的字体。

如果要在第二个草图中使用font变量,首先必须确保在运行第二个草图之前加载它。换句话说,您的第一个草图setup()需要看起来像这样,loadFont()之前发生runSketch()

void setup() {

  font = loadFont("Arial-Black-30.vlw");
  textFont(font);  

  String[] args = {"TwoFrameTest"};
  SecondApplet sa = new SecondApplet();
  PApplet.runSketch(args, sa);
}

然后,如果您想在第二个草图中使用font,则必须从setup()draw()开始,而不是从settings()开始。

public class SecondApplet extends PApplet {

  public void settings() {
    size(200, 200);
  }

  public void setup() {
    textFont(font);
  }

  public void draw() {
    background(255);
    fill(0);  
    text("Hello world!", 50, 40);
  }
}

总而言之,它看起来像这样:

PFont font;

void setup() {

  font = createFont("SourceCodePro-Regular.ttf", 24);

  String[] args = {"TwoFrameTest"};
  SecondApplet sa = new SecondApplet();
  PApplet.runSketch(args, sa);

  textFont(font);
}

void settings() {  
  size(300, 100);
}

void draw() {
  background(0);
  fill(255);
  text("Hello world!", 50, 40);
}   


public class SecondApplet extends PApplet {

  public void settings() {
    size(200, 200);
  }

  public void setup() {
    textFont(font);
  }

  public void draw() {
    background(255);
    fill(0);  
    text("Hello world!", 50, 40);
  }
}