ツクールMVのテストプレイでCannot read property 'width' of null
◆要約:ピクチャ消去のタイミングに注意
◆はじめに
おそらく解決
◆経緯
現在製作中のゲーム「ありがとう!ワタシの経営」のツクールMVリメイク版。
Windowsでの通しでのテストプレイがひとまず終わりました。
このゲーム、Android用アプリとしても公開できればと考えています。
よってAndroidでのテストプレイは不可避。
しかしいざ実機で動かしてみると、あるエラーが頻発してしまいました。
Cannot read property 'width' of null
たまに出る程度なら「まあそんなこともあります」で流してしまうつもりでしたが、ゲーム開始後キャラを移動させたタイミングで必ず発生してしまいます。
ゲームも進行不可になってしまうので、原因を探ることにしました。
◆原因を探る
調べてみると、原因として考えられそうな内容は以下のとおり。
【1】
ツクールMV エラー別 トラブルシューティング(RPGツクールMVでアプリリリースを目指す開発室)
http://fanblogs.jp/tabirpglab/archive/231/0→プラグインに原因?
導入しているプラグインをGREP検索、「width」の文字を用いているプラグインを洗い出しました。
そしてそれぞれオフにして行き、問題を起こしているプラグインがどれなのかを検証。
しかしどれをオフにしても現象は解消しませんでした…。
【2】
PRGツクールMV 立ち絵描画のチラつき回避(避難所の一つ)
http://ashelter.blog.fc2.com/blog-entry-13.html→ピクチャ消去のタイミングに問題?
◆原因
プラグインが原因でないとなると、ピクチャ以外にもうあてがありません。
エラーが出るマップで、ピクチャを並列で処理しているイベントが有りました。
画面上部に施設の概要を表示するイベントです。
カーソルが施設の上にあれば施設名をピクチャで表示、何もなければそのピクチャを削除していました。
(ちなみにツクール2000版でも同じイベントを動かしています。)
この「何も無ければピクチャを削除」のところが問題なようでした。
カーソル位置に施設がなくて、何もピクチャを表示していないのに、ピクチャを消し続けようとしている動きに原因?
◆対応する
とりあえず上記イベントを、「何も無ければピクチャを削除」から「何も無いときは透明なピクチャを表示」に変更しました。
(とりあえずと言っても多分この対応のままです(;´Д`))
◆おわりに
これに関係するかは不明ですが、ピクチャの消去関係のエラーで、WEB版やスマホ版で現象が頻発するものもあるようです。
「ピクチャの表示」→「ウェイト1フレーム」→「ピクチャの消去」でエラーが発生する場合がある(Webブラウザでの実行やスマホの場合は特に)現象を回避する修正パッチです。https://t.co/ywEc0o8gX5#ツクールMVプラグイン
— トリアコンタン (@triacontane) 2016年2月24日
今回、Androidで動かさなければわからなかったエラーでしたので、実機デバッグは重要ですね(*´∀`*)
「Cannot read property 'width' of null」のエラーが出る条件はプラグインだけではないということも分かったので、次回現象発生時はピクチャ関係も疑うようにしたいと思います。