ページ 11

【解決済】プラグインを動的にON、OFFする方法(バックログのプラグインの不具合対応)

Posted: 2017年8月16日(水) 01:30
by よしだとものり
現在、ぽに犬様のバックログのプラグインを利用させて頂いているのですが、
戦闘画面に入るとtypeエラーが表示されます。

そこで、プラグインコマンドで戦闘画面に入る前にOFFにして
戦闘画面を抜けたらONにするようにしようと考えています。

プラグインコマンドのBackLogOFFで変数に1を
BackLogONで変数に0を入れるようにして
プラグインコマンドの処理が終わったら
変数が1ならばreturnするようにしてみたのですが
変わらずエラーが発生します。

最初は即時関数内で変数を宣言したからかなと思い
即時関数の外で var xxx;と宣言してみましたが
変わらずエラーが発生します。

即時関数の中でreturnしてもプラグインを無効にすることは
できないのでしょうか?

また、動的に無効にするにはどのようにしたらよろしいのでしょうか?
怪しい箇所を全て if(xxx==0) で括るしかないのでしょうか?

Re: プラグインを動的にON、OFFする方法

Posted: 2017年8月16日(水) 03:28
by しぐれん
原理的にほぼ無理です。
できたとしても、動的に切り替えたことによるバグが発生する可能性があるでしょう。
なので、条件を詳しく調べてバグ報告がいいと思います。

typeエラーが undefined not a functionを指すのであれば、どこかで存在しない関数を呼んでいる可能性があります。
(2016年の記述ですが)調べたところver1.0未満で人柱との記述がありました。
F8でスタックトレースを出して、エラーの原因を特定するのが良いでしょう。

Re: プラグインを動的にON、OFFする方法

Posted: 2017年8月16日(水) 10:17
by よしだとものり
ありがとうございます。
解決しました。
発生個所はBackLog.prototype.ButtonPress
picIDがバトル中は何故か0になってましたので
0ならreturnするようにしたら解決しました。

なお、私はツイッターも何もやらないので、ぽに犬様への報告方法は
分かりません。

Re: 【解決済】プラグインを動的にON、OFFする方法

Posted: 2017年8月16日(水) 12:59
by しぐれん
調べたところぽに犬さんのブログがあるようですので、そこに書き込んでみるのはどうでしょうか?

Re: 【解決済】プラグインを動的にON、OFFする方法

Posted: 2017年8月16日(水) 16:54
by よしだとものり
先ほど、ブログを探してコメントしました。
ありがとうございました。

追記
そのうち対応されるかと思いますが、詳しくは以下のように
最後の行を追加するとエラーが出なくなります。
ただし自分は素人なので自己責任でお願いします。

BackLog.prototype.ButtonPress = function(picID) {

if($gameScreen.picture(picID)==null)return 0;
if($gameScreen.picture(picID)._visible==false)return 0;

var tx = TouchInput.x;
var ty = TouchInput.y;

var nPictureId=picID-1;
//配列の[0]に1番を入れて順に格納してるのでアクセスする際にずれを訂正しておく。

//
var nButtonW,nButtonH;
//下の一行を追加します。
if(picID==0) return;