× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
Androidはiosと比べてスレッドに気をつけて実装する必要がある。
描画処理をメインスレッドで実行するとすぐ落ちる。 runOnUiThread()とは仲良くなっておこう。
cocos2d-xを使っている場合 cocos2d-xの処理は、できるだけメインループである
から呼び出される中で実行した方が良い。 といっても、普通に実装していれば大抵はこの中から呼び出される。 JavaからnativeのCメソッドを呼び出すような場合は、この限りでない。 例えば、Twitterでシェアしたのを確認した後、ゲーム内でインセンティブを与えたいといったようなとき、Java側からnativeメソッドを呼び出すようなことになるが、 このときはメインループから呼び出されない。 こういう場合、cocos2d-x内で画像読み込みや音声再生など、リソースにアクセスするような処理を行うと、 セグメンテーションエラーが起きたり、(Fatal signal 11 (SIGSEGV) at 0x00000000) 処理が止まったりする(タッチが反応せず、他のスレッドで描画や音声はそのまま再生できてたりする)。 そういうときは、Javaから呼び出すnativeメソッドではフラグを立てるだけにしておいて、 メインループからフラグをチェックしてインセンティブの処理を行う、のようにすれば回避できる。 PR |
|