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 を入れないとダメっぽいですね><
んまぁ、とりあえず動いたのでよしとしますか。。。