java—如何在其他scala类中使用处理函数?

e7arh2l6  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(442)

因此,我尝试使用处理来创建一个scala应用程序,我的问题是如何使用除“main”类之外的一些处理函数,在“main”类中示例化整个应用程序。
这是启动应用程序的主类。

  1. import processing.core.{ PApplet, PConstants }
  2. import attackers._
  3. class main extends PApplet {
  4. override def setup() = {
  5. background(255, 255, 50)
  6. }
  7. override def settings() = {
  8. ...
  9. }
  10. override def draw() = {
  11. var start = new Cell(0, wHeight / 2)
  12. val base = new BasicAttacker(start)
  13. ...
  14. base.move()
  15. base.display();
  16. }
  17. }
  18. object main extends App {
  19. PApplet.main("tower.main")
  20. }

我想在这里使用fill和rect函数:

  1. import tower._
  2. import processing.core.PApplet
  3. class Base(cell: Cell) extends Basic(cell) {
  4. ...
  5. var x = cell.x
  6. var y = cell.y
  7. ...
  8. def display() {
  9. fill(150, 100, 150)
  10. rect(x, y, 50, 50);
  11. }
  12. }

出现的错误是:

  1. java.lang.NullPointerException
  2. at processing.core.PApplet.fill(PApplet.java:14781)
  3. at attackers.BasicAttacker.display(BasicAttacker.scala:27)
  4. at tower.Game.draw(Game.scala:73)
  5. at processing.core.PApplet.handleDraw(PApplet.java:2482)
  6. at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1547)
  7. at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:313)

这个 display() 将函数添加到 draw() 中的方法 main 类,但当我将其移动到类本身时,它以nullpointerexception的方式失败。
关于如何在app类以外的其他类中使用处理函数,有什么想法吗?

uhry853o

uhry853o1#

所以我设法找到了答案。
基本上,问题是您需要在类中将“处理草图”作为参数传递。例如:

  1. class BasicTower(c: Cell, sketch: PApplet) extends Tower(c, sketch) {
  2. def display() {
  3. sketch.fill(102, 255, 102)
  4. sketch.rect(cell.x, cell.y, 50, 50)
  5. }
  6. }

如果要在主处理文件中使用它,只需编写:

  1. new BasicTower(Cell, this)

不确定这是否是最好的方法,但至少它是有效的。

相关问题