Java 如何在其他Scala类中使用处理函数?
因此,我尝试使用创建一个Scala应用程序,我的问题是如何使用除“main”类之外的一些处理函数,在“main”类中,整个应用程序都是实例化的 这是启动应用程序的主类Java 如何在其他Scala类中使用处理函数?,java,scala,nullpointerexception,processing,Java,Scala,Nullpointerexception,Processing,因此,我尝试使用创建一个Scala应用程序,我的问题是如何使用除“main”类之外的一些处理函数,在“main”类中,整个应用程序都是实例化的 这是启动应用程序的主类 import processing.core.{ PApplet, PConstants } import attackers._ class main extends PApplet { override def setup() = { background(255, 255, 50) } overr
import processing.core.{ PApplet, PConstants }
import attackers._
class main extends PApplet {
override def setup() = {
background(255, 255, 50)
}
override def settings() = {
...
}
override def draw() = {
var start = new Cell(0, wHeight / 2)
val base = new BasicAttacker(start)
...
base.move()
base.display();
}
}
object main extends App {
PApplet.main("tower.main")
}
这就是我想使用Processing中的fill和rect函数的地方:
import tower._
import processing.core.PApplet
class Base(cell: Cell) extends Basic(cell) {
...
var x = cell.x
var y = cell.y
...
def display() {
fill(150, 100, 150)
rect(x, y, 50, 50);
}
}
出现的错误是:
java.lang.NullPointerException
at processing.core.PApplet.fill(PApplet.java:14781)
at attackers.BasicAttacker.display(BasicAttacker.scala:27)
at tower.Game.draw(Game.scala:73)
at processing.core.PApplet.handleDraw(PApplet.java:2482)
at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1547)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:313)
当我将display()
函数添加到main
类中的draw()
方法时,它会工作,但当我将它移动到类本身时,它会以NullPointerException的方式失败
关于如何在app类以外的其他类中使用处理函数,有什么想法吗?因此我设法找到了答案 问题基本上是您需要将“处理草图”作为类中的参数传递。例如:
class BasicTower(c: Cell, sketch: PApplet) extends Tower(c, sketch) {
def display() {
sketch.fill(102, 255, 102)
sketch.rect(cell.x, cell.y, 50, 50)
}
}
然后,如果要在主处理文件中使用它,只需编写:
new BasicTower(Cell, this)
不确定这是否是最好的方法,但至少它是有效的。所以我设法找到了答案 问题基本上是您需要将“处理草图”作为类中的参数传递。例如:
class BasicTower(c: Cell, sketch: PApplet) extends Tower(c, sketch) {
def display() {
sketch.fill(102, 255, 102)
sketch.rect(cell.x, cell.y, 50, 50)
}
}
然后,如果要在主处理文件中使用它,只需编写:
new BasicTower(Cell, this)
我不确定这是否是最好的方法,但至少它是有效的。我相信有一个
dropNullValuesRecursive
但它是新的。在最新的0.13.0版本中。我相信有一个dropNullValuesRecursive
,但它是新的。在最新的0.13.0版本中。