RSS

TyranoScript + Live2D + phonegap でiOSアプリ化したらLive2Dが動かない

21 5月

TyranoScript + Live2Dで作ったゲームをPhonegapでiOS化してみたら
TyranoScriptで作っている部分は問題なく動いているが、
Live2Dで作ったオブジェクトが表示されず、そこでゲームも止まってしまう。

Live2DはTyranoScript公式で配布されているLive2Dプラグインをまるっと取り込んで、
assets以下にあるキャラクター部分を自前で作ったLive2Dのものに置き換えている
Live2Dプラグイン

PCでChromeで確認した時は問題なく表示されている。

原因がいまいちわからないので、
iphoneシミュレータ+Safariでログを見てみる。

phonegapで作ったiOSアプリのログを見る
デバッグの仕方はここに。

[Error] TypeError: undefined is not an object (evaluating 'Live2Dcanvas['panda'].alphaChange')

何かエラーでてる。
Live2Dcanvas[‘panda’]というオブジェクトが初期化されてねえよと。

どうやらTyranoScriptでlive2d_newタグでpandaをロードしようとした時に上記のエラーが原因でゲームが止まってしまっているぽい。

とりあえずLive2Dcanvas[‘panda’]を読んでるところに片っ端からundefinedチェックいれてみる。

    if (typeof Live2Dcanvas[model_id] != "undefined") {
        〜処理〜
    }

対象はLive2Dプラグインで持ってきた
live2d.ks
Live2Dtyrano.js

・・・undefinedのエラーは出なくなった。
ゲームも止まらなくなったけどやっぱりLive2Dのキャラは表示されない。
もう一度ログを見てみるとエラーじゃない普通のログに紛れてこんなのが出ていた

Failed to load (0):www/data/others/live2d/assets/panda/motions/idle.mtn

ん?ステータスが0?
もしかしてLive2Dのファイル(画像orJSON)が読めてない?
ファイルのパスをログに出力してみたが、問題なさそう。
ちゃんとファイルもappの中に入っている。

参照パスはあってるってことは読み込んだ後の処理がうまく動いてない?
ファイルは見えてるけど読み込めてない?

Live2Dtyrano.jsのlive2d_newの中でmodel.jsonをロードしているところ
onreadystatechangeでステータスチェックしているけど、その辺から調べてみる。

        if(request.readyState == 4 && request.status == 200 ){
            // model.jsonから取得
            〜
        }

readyState, statusの組み合わせをログに吐き出して見てみると、
PCブラウザで実行してた時は(Node.jsで立てたサーバのリソースを見てるからだと思うけど)
読み込みに成功した時にreadyState=4, status=200になるが
phonegapで吐き出して動かした場合、readyState=4, status=0になっているご様子。

XMLHttpRequest入門
XMLHttpRequestのstatusがローカルのファイルの場合、status=0になるらしい。
知らんかった。
phonegapでiOSアプリ化すると中にJavaScript内包するのでローカルファイル参照扱いなんですね。

とりあえず自分で使うだけなのでこんなかんじに修正

        if(request.readyState == 4 && (request.status == 200 || request.status == 0)){
            // model.jsonから取得
            〜
        }

readyState=4, status=0も読み込み完了扱いに。

他にもreadyState=4, status=200でチェックしてたところがあったので、同じように
readyState=4, status=0も通るように
対象ファイルはこの辺
Live2Dtyrano.js
Live2DFramework.js

・・・・
うごいたああああああああ!!!
コンソール見てもエラーログっぽいものは出てません!

Live2D_01
静止画っぽいけどちゃんと瞬きしてます。

Live2D動かないーで結構ググったけどあんまり対応策を見つけられなかったので
(自分の検索スキル的なアレかもですが)
もしかして自分が使ってるLive2Dプラグインが古かったのかな。

まだデバッグ中なので、これで本当に挙動が問題ないか確認中ですが、
ひとまずこのままで進めてみる。
とりあえずプログラムの準備が終わったのでLive2Dに専念できるぞー(*´∀`)

お疲れ様でした。

広告
 
1件のコメント

投稿者: : 2015/05/21 投稿先 iOS, JavaScript, Mac, tyranoscript

 

TyranoScript + Live2D + phonegap でiOSアプリ化したらLive2Dが動かない」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

 
%d人のブロガーが「いいね」をつけました。