質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

2回答

4001閲覧

processingでクラス内で音声データを呼び出すとNullPointExceptionになる

Kxxx

総合スコア8

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2016/11/16 16:11

編集2016/11/17 01:27

###前提・実現したいこと
processingでゲームを作っているので、画面遷移ごとにbgmを流したいです。ぜひ、ご回答よろしくお願いします。
###発生している問題・
タイトル画面やゲーム画面など、画面遷移がたくさんあるのでそれぞれクラスを作り、その中でbgmを流すコードを書きたいのですが、エラーが出てしまいます。

main関数の中ではbgmを再生できるのですが、クラスの中で呼び出そうとすると、NollPointExceptionとなってしまいます。main関数の中で、クラスをインスタン化するのですが、その際に下記のコードだとNullPointException とともに couldn't load moon.mp3 というエラーが出ます。そもそも曲を読み込めていないようです。

なお、minimライブラリは、main関数の方ですでに読み込んであります。

###ソースコード

class Title { Title(){ minim = new Minim(this); bgmTitle = minim.loadFile("moon.mp3"); } draw() { if(isMusicStart){ isMusicStart = false; bgmTitle.play(); } } }

###試したこと
main関数内で、下記のようにbgmを呼び出すと正常に再生されます。

###ソースコード

void setup() { minim = new Minim(this); song = minim.loadFile("moon_p.mp3"); song.play(); }

###環境
processing 3.2.1
minim 2.2.2 です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

随分前の質問ですが、自分も詰まったので、書いておきますね。

Title{PApplet p){
minim = new Minim(p);
bgmTitle = minim.loadFile("moon.mp3");
}
としておいて、呼び出すときにnew Title(this)
としてインスタンス化します。
再生するメソッドは別に作っておく必要があります。
動くソースは以下参考をご覧ください。
参考:
https://forum.processing.org/two/discussion/11559/library-minim-in-a-class

投稿2018/03/04 15:56

MichiroSakamoto

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

この様にすれば良いのでは?

processing

1class Title { 2AudioPlayer bgmTitle; 3 Title(){ 4 minim = new Minim(this); 5 bgmTitle = minim.loadFile("moon.mp3"); 6 } 7 8 draw() { 9 if(isMusicStart){ 10 isMusicStart = false; 11 bgmTitle.play(); 12 } 13 } 14}

投稿2016/11/17 01:12

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kxxx

2016/11/17 01:24

回答ありがとうございます。 こちらの方法で試しても === Minim Error === === Couldn't load the file moon.mp3 というエラーが出ます。
MasahikoHirata

2016/11/17 01:32

では、’Minim minim;’を'AudioPlayer bgmTitle;'の次の行に追加では?
Kxxx

2016/11/17 01:36

やはりダメでした。 bgmTitle = minim.loadFile("moon.mp3");の時点でmp3ファイルがロードできてないみたいです。
MasahikoHirata

2016/11/17 01:39

2つめのソースではファイル名が’moon_p.mp3’なのですが、’moon.mp3'は存在してますよね?
Kxxx

2016/11/17 01:43

はい、どちらのファイルも存在しています。main関数内でmp3をロードするとできるのですが、やはりclass内から呼ぶとロードができないようです。
MasahikoHirata

2016/11/17 01:47

ではクラスの外に私が追加した部分2行を移動されたらどうなりますか?
Kxxx

2016/11/17 01:50

クラスの外に書こうとすると、Duplicate fieldとなりエラーになりますね...
MasahikoHirata

2016/11/17 01:59

念のため呼び出し側(部分でも)を開示して頂くのは?それとオブジェクトの宣言部と。
MasahikoHirata

2016/11/17 02:00

エラーでは’NullPointException’なので変数がわたっていないと考えて。
MasahikoHirata

2016/11/17 14:37

いろんなサイトを見てみましたが、(多くはClassを使ってなかった)やはり私が書いた方法の様ですね。しかし音が出ないのは、まさかとは思うけど'Class'でPathが変わる? もう少し調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問