09-03 PhysicsHandler のメソッド – 2

CatmullRomMoveModifierConfig にどはまり。。。orz

結果として、ソースファイルにミスがあって、修正しないと使えないメソッドでした。
修正箇所は下のファイルの (ここっ!) に static を入れます。
※2013/02/21 現在のお話です。git でダウンロードした人は修正済みのはずですが zip の場合は最新版をダウンロードしてもダメでした。
AndEngine-GLES2\src\org\andengine\entity\modifierCatmullRomSplineMoveModifier.java

// 修正前
public (ここっ!) class CatmullRomMoveModifierConfig extends CardinalSplineMoveModifierConfig {

↓↓↓

// 修正後
public static class CatmullRomMoveModifierConfig extends CardinalSplineMoveModifierConfig {

 

以下は見つけるまで苦労したのでメモです 😉

CardinalSplineMoveModifier とまったく同じ方法でやっていたのですが

private static final CatmullRomMoveModifierConfig pCatmullRomMoveModifierConfig = new CatmullRomMoveModifierConfig(5);

↑のところでエラー。。。

No enclosing instance of type CatmullRomSplineMoveModifier is accessible. Must qualify the allocation with an enclosing instance of type CatmullRomSplineMoveModifier (e.g. x.new A() where x is an instance of CatmullRomSplineMoveModifier).

ご丁寧に CatmullRomSplineMoveModifier の instance だから “x.new A()” って感じで書いてね!って出てくれてたので “CatmullRomSplineMoveModifier.new CatmullRomMoveModifierConfig()” とかやってみてもダメで。。。
調べると

January 11, 2013
nicolasgramlich closed issue nicolasgramlich/AndEngine#195
Minor but important fix in CatmullRomMoveModifierConfig
https://github.com/nicolasgramlich/AndEngine/issues/195 のやり取りで、public → static になったんだ~

というところまでは分かったのですが、いかんせん java(というか オブジェクト指向を) を知らないので static に代わるとどうなるのかわかりません X(
てことで static を調べまくって。。。。 むしろ static の方がいちいち instance 生成(?)しなくてもいいのかー。。。とか ↓ のように
http://stackoverflow.com/questions/4413000/how-do-i-properly-delcare-an-instance-of-a-subclass-in-java

private static CatmullRomSplineMoveModifier pCatmullRomSplineMoveModifier = new CatmullRomSplineMoveModifier().new CatmullRomMoveModifierConfig(); 
private static CatmullRomSplineMoveModifier pCatmullRomSplineMoveModifier = new CatmullRomSplineMoveModifier();
private static CatmullRomSplineMoveModifier pCatmullRomSplineMoveModifier = CatmullRomSplineMoveModifier.new pCatmullRomSplineMoveModifier();

とかとか、いろいろやりまくってもダメダメ。。。ecilpse さんの修正候補もことごとく外れまくりです X(

唯一、↓はコンパイルエラーにはならなかったですけど、実行すると null pointer…
※これは薄々そうではないかと思ってたのですが(汗

private static CatmullRomSplineMoveModifier pCatmullRomSplineMoveModifier

にっちもさっちもいかなくなり、自分のプログラムではなく自分の環境の AndEngine のソースをじっくり見てみることに。。。

するとっ!

CatmullRomSplineMoveModifier.java

public (ここっ!) class CatmullRomMoveModifierConfig extends CardinalSplineMoveModifierConfig {

static が入ってないじゃないかあああああ!

最新版をダウンロードしてるはずなのに。。。。。orz
今ダウンロードしてもやっぱり修正されていないので github の zip ダウンロードは release 版のみなのですね?
やっぱり git を入れないとダメっぽいですね><

んまぁ、とりあえず動いたのでよしとしますか。。。

コメントを残す

メールアドレスが公開されることはありません。


*