今日本気でcocos2d-x Ver2.0をAndroidで動かそうと、
何故ハングで即落ちするのか調べました。

いつもシーンの切り替え時におちており、
initで落ちていることからその辺がくさいと思ってました。

何も処理しないままreturnで帰らせ、どこで落ちるのか調べてみたところ。。。

CCSprite::createで落ちてる!
ってことがわかりました。

その画像のフォーマットをみてみると。
pngのインデックスカラー!
これをフルカラーにしてみると・・・

動いた(^▽^)/

どうやらpngファイルはフルカラー形式じゃないと落ちる原因になるようです。
Ver 1系はそんなことなかったんですが、ある意味退化してますね!!

よし、これでゲームできるじゃん!とTiledを読み込ませると。。。

$恋愛想感 feel our mutual love. nao's side.-attachment01.jpg

あれ、画面の途中から読み込まれてない・・・
iPhoneで確認してみると。

$恋愛想感 feel our mutual love. nao's side.-attachment00.jpg


ちゃんと表示されてるじゃん!

これ、読み込めるマップと読み込めないマップがあるみたいで、
途中から画像なかったり、全てあったりとばらばら。

ためしにTiledのレイヤーをXML形式で出力させると・・・
見事に落ちた^^
XML形式のTiledにはcocos2d-xは対応していないようだ。

仕方なくbase64未圧縮でやってみると・・・
読み込みはするがやはり画像が途中から途切れている。

どうやら、Androidのbase64パーサーに問題があるっぽい。
同じソース使ってるはずなんだけどなー。
前のバージョンでコンパイルしたらちゃんと表示するし。

何が原因かよくわからないけど、base64パーサーのコンパイルでおかしくなってます。
androidのnative_build.shってコンパイラかえれるのかしら?
よくわからんわん♪

ということで、結論は「まだ使えない!」

なんてこったい!


あともうひとつわかったことが。
ccTouchBeginでタッチの位置取得するんだけど、
androidはタッチするとなぜかMovedも呼ばれるようで
ccTouchBeginで拾ってccTouchEndedでMoveが呼ばれなかったか判定してたのに
うまくうごかなかった。
しかたなくMovedでやってほしくない処理通ったらフラグ立てておいて
Endedでそのフラグがたってなかったらそのままタッチした認識とするようにしたら
うまく動いた。

めんどくせーよandroidちゃん!


さーて、どうしようかね。
このTiledバグ、なんか次のcocos2d-xのバージョンでTiledサンプルクラッシュが
修正されてるんだけど、これも修正されてないかな?

ちょっと期待。