Processing 3.3では、処理ライブラリとJavaを学習するための簡単なスタータープロジェクトとして、マトリックステキストレインエフェクトを作成しています。これまでの私のコードは:それは多くのコードだったのでMatrix Text Processingでの雨の影響3.3
class Symbol {
int x, y;
int switchInterval = round(random(2, 50));
float speed;
char value;
Symbol(int x, int y, float speed) {
this.x = x;
this.y = y;
this.speed = speed;
}
//Sets to random symbol based on the Katakana Unicode block
void setToRandomSymbol() {
if(frameCount % switchInterval == 0) {
value = char((int) random(0x30A0, 0x3100));
}
}
//rains the characters down the screen and loops them to the top when they
// reach the bottom of the screen
void rain() {
if(y <= height) {
y += speed;
}else {
y = 0;
}
}
}
Symbol symbol;
class Stream {
int totalSymbols = round(random(5, 30));
Symbol[] symbols = new Symbol[500];
float speed = random(5, 20);
//generates the symbols and adds them to the array, each symbol one symbol
//height above the one previous
void generateSymbols() {
int y = 0;
int x = width/2;
for (int i = 0; i <= totalSymbols; i++) {
symbols[i] = new Symbol(x, y, speed);
symbols[i].setToRandomSymbol();
y -= symbolSize;
}
}
void render() {
for(Symbol s : symbols) {
fill(0, 255, 70);
s.setToRandomSymbol();
text(s.value, s.x, s.y);
s.rain();
}
}
}
[OK]を、私は私のジレンマを説明しましょう。私が抱えている問題は、コードを実行すると、レンダリング関数の各ループに対してs.setToRandomSymbol();
メソッド呼び出しでNullpointerExceptionが発生するということです。このNullPointerExceptionエラーに関する不思議な部分と私が理解していない部分は、空に戻ってくる可能性のある引数を取らないメソッドにスローされ、メソッド自体が無効なので、何かを返すだろうか?これがなぜNullを返すのですか?そして、それをこのように戻すのに間違ったことは何ですか?
「幅」とは何ですか、それはどこに設定しますか? – Fodder
'width'はウィンドウの幅に等しい処理ライブラリの組み込み変数です。 – TKDefender
[mcve]を投稿してください。あなたのコードを実行しようとすると、 'symbolSize'が定義されていないので、私はエラーに遭遇します。私がそのエラーを修正しても、 'setup()'や 'draw()'関数を含めていないので、空白のスケッチを得るだけです。すべてのコードを掲載するのではなく、実行可能な小さなサンプルを作成してみましょう。 –