2011-11-08 18 views
3

私は処理プロジェクトにScalaを使用して遊んでいます。nullポインタ例外:Javaクラスのスカラー拡張

ToxicLibsからRectクラスを拡張しましたが、メソッド内からrect(toxi.geom.Rect r)を呼び出そうとするとnullポインタ例外が発生します。

import toxi.processing.ToxiclibsSupport 
import toxi.geom.{ Vec2D, Rect } 

class Scope(x: Float, y: Float, width: Float, height: Float) extends Rect(x, y, width, height) { 

    def this(r: Rect) { 
    this(r.x, r.y, r.width, r.height) 
    } 

    def draw(gfx: ToxiclibsSupport) { 
    gfx.rect(this) // null pointer exception occurs here 
    } 

} 

これはdrawメソッドを呼び出すコードです:

import processing.core.PApplet 
import toxi.processing.ToxiclibsSupport 
import toxi.geom.Rect 

class ScalaP5Test extends PApplet { 

    var gfx = new ToxiclibsSupport(this) 

    override def setup() { 
    size(1000, 800) 
    } 

    override def draw() { 
    var scope = new Scope(100, 200, 400, 300) 
    scope.draw(gfx) // draw called here 
    } 
} 

任意のアイデア?

+0

ああ、私はそれを手に入れました。私はgfxの初期化を 'var gfx:ToxiclibsSupport = null'に変更し、' gfx = new ToxiclibsSupport(this) 'を' setup() 'に追加しました。 – bjz

+0

あなたの答えを加えてそれを受け入れてください:-) – aishwarya

+0

私はすでに試しました;)。私は十分なポイントがないので、私はさらに6時間まで自分自身に答えることができません。 – bjz

答えて

1

ああ、私はそれを得た:

class ScalaP5Test extends PApplet { 

    var gfx = null 

    override def setup() { 
    gfx = ToxiclibsSupport(this) 

    ... 

    } 

    ... 

} 

は、その後、あなたが他の関数で変数を再利用することができます。私はそれが最善の方法であるかどうか分からないので、もしあなたがより良い方法を持っているなら、私に教えてください!