gpt4 book ai didi

java - 如何使用另一个类的方法? (从Processing导出的android项目)

转载 作者:行者123 更新时间:2023-12-01 10:24:43 25 4
gpt4 key购买 nike

我的项目是从Processing导出的android项目。它使用 Fontastic 库。每当我尝试在 Android 设备上运行它时,它总是强制关闭。我认为这是因为 MainActivity 上的 font.setup() 但我想不出任何解决方案。请看一下下面的代码行。谢谢。

这是MainActivity.java

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {
public static Wave font;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

font.setup();
}
}

这是名为Wave.java的类

import fontastic.FPoint;
import fontastic.Fontastic;
import processing.core.PApplet;
import processing.core.PFont;

public class Wave extends PApplet {
Fontastic f;
float charWidth = 512;
PFont myFont;
int version = 0;
boolean fontBuilt = false;

public void setup(){
randomize();
create();
}

public void randomize(){
version++;
if (f != null) { f.cleanup(); }
f = new Fontastic(this, "WaveFont" + nf(version,4));
f.setAdvanceWidth(PApplet.parseInt(charWidth));
for (int i=0; i<Fontastic.alphabet.length; i++) {
char c = Fontastic.alphabet[i];
FPoint[] points = new FPoint[4];
float rectSize = charWidth * 0.5f;
float rnd = charWidth * 0.2f;
points[0] = new FPoint(charWidth / 2 - rectSize / 2, charWidth / 2 - rectSize / 2);
points[1] = new FPoint(charWidth / 2 - rectSize / 2, charWidth / 2 + rectSize / 2);
points[2] = new FPoint(charWidth / 2 + rectSize / 2, charWidth / 2 + rectSize / 2);
points[3] = new FPoint(charWidth / 2 + rectSize / 2, charWidth / 2 - rectSize / 2);
points[0].setControlPoint1(points[0].x + rnd, points[0].y + random(-rnd, rnd));
points[1].setControlPoint1(points[1].x + random(-rnd, rnd), points[1].y - rnd);
points[2].setControlPoint1(points[2].x - rnd, points[2].y + random(-rnd, rnd));
points[3].setControlPoint1(points[3].x - random(-rnd, rnd), points[3].y + rnd);
points[0].setControlPoint2(points[0].x + random(-rnd, rnd), points[0].y + rnd);
points[1].setControlPoint2(points[1].x + rnd, points[1].y + random(-rnd, rnd));
points[2].setControlPoint2(points[2].x + random(-rnd, rnd), points[2].y - rnd);
points[3].setControlPoint2(points[3].x - rnd, points[3].y + random(-rnd, rnd));
f.addGlyph(c).addContour(points);
}
}

public void create(){
f.buildFont();
f.cleanup();
myFont = createFont(f.getTTFfilename(), 200);
fontBuilt = true;
}
}

最佳答案

您需要创建一个要使用其方法的类的对象。如果不这样做,您将收到 NullPointerException,因为变量 font 未初始化。

这样做

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
font = new Wave(); // You missed this line
font.setup();
}

关于java - 如何使用另一个类的方法? (从Processing导出的android项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35405606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com