java - 如何在其他 Scala 类中使用处理函数?
问题描述
所以我正在尝试使用Processing制作一个 Scala 应用程序,我的问题与我如何在整个应用程序实例化的“主”类之外使用一些处理函数有关。
这是启动应用程序的主类。
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")
}
这就是我想使用处理中的填充和矩形函数的地方:
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()
函数起作用,但是当我将它移到类本身时,它以某种方式失败并出现NullPointerException 。draw()
main
关于如何在应用程序类以外的其他类中使用处理函数的任何想法?
解决方案
所以我设法找到了这个问题的答案。
问题基本上是您需要将“处理草图”作为参数传递给类。例如像这样:
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)
不确定这是否是最好的方法,但至少它有效。
推荐阅读
- javascript - 使用Javascript无法找到给定文本中有多少元音
- python - 如何找到按另一列 y 排序的列 x 的总量?
- windows - 从 txt 文件中查找相似的数字并将匹配的编号行保存在不同的 txt 中
- python - Python,从数据框中获取随机记录,但在不同列唯一值上具有优先级
- flutter - 如何解决颤振错误:找不到吸气剂:'小部件?
- sql-server - 从 SQL Server 迁移到 POSTGRESQL 时的日期函数问题
- react-native - React Native React-Hook-Form 重置
- reactjs - Electron/React:如何避免使用递归文件/文件夹枚举阻塞主线程
- macos - Mac应用程序安装在开发人员机器上的未知位置
- javascript - 如何解决冲突的Javascript?