2018-10-16に更新

cocos2d-jsでInvalid Native Object

cocos2d-jsにて、androidでrunしてみると、真っ黒で何も表示されない。
FPS表示は動いているのでうごいてはいるらしい。

android studioのログを見てみると下記のようなログが出力されていた。(抜粋)

js_cocos2dx_Node_isRunning : Invalid Native Object
(evaluatedOK == JS_FALSE)
JS: assets/script/jsb_prepare.js:254:Error: js_cocos2dx_Node_isRunning : Invalid Native Object
Evaluating main.js failed (evaluatedOK == JS_FALSE)

main.jsの評価に失敗しているということなので、
もしかすると何かしらwebでしか動かない構文があるのではないかと細かく調べてみたが、見つからない。

次にInvalid Native Objectを調べてみると、どうも実行時だけにでるエラーとのこと。
androidでのJavaScriptの実行時だけ何かエラーが出ているらしい。

最終的に、sceneに定義しているrunningメソッドをgoingという名前に変更したら動いた。
どうもSpriteクラスのメソッドを上書きしていておかしくなっていたらしい。

webだと単にJavaScript上でメソッドを上書きするだけだが、
実機だとc言語側でエラーが出るのでエラー時の挙動が変わってしまうようだ。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, Vue.js, React, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!
ボードとは?

関連記事

コメント