前提としてjsもプラグインも初心者の書いた記事です
立ち絵プラグイン作るときに、あらかじめプラグインパラメータに登録しておけば自動的に適応されるといいなあ〜〜! とかぼんやりしてたんですが、取得方法に四苦八苦したのでメモ。
実装方法
まず実装方法はググって出てきたこれを参考にしました。ありがとうございます。
ただ、そのプラグインパラメータの取得方法がググってもわからんかったんですよね。
てことで実装してツクール本体でONにしたあと入力して、plugin.jsを見てみました。
な、なるほど……!?
つまるところプラグインパラメータは配列と連想配列の組み合わせっぽいです。
で、これが曲者で、まずプラグインパラメータを取得するときは
var 変数名1 = PluginManager.parameters(プラグインの名前);
でパラメータの情報は取得できるんです。
さらに言えばLeftPictureIDとかの[]で囲まれてないやつも簡単に取得できるんです。
連想配列なので(多分)、
var 変数名2 = Number(変数名1.LeftPictureID);
にすればもうプラグイン内でゴリゴリ使えます。
問題はFileNameAndCharacterNameとかの[]で囲まれてさらに{}で囲まれてるやつです。
多分連想配列を配列にして管理してるんでしょうけど、js初心者、ここでつまづきました。
例えばFileNameAndCharacterNameの中にある一番目のCharacterNameをとりたかったとしましょう。配列だからこうとるんじゃないのかな〜〜って思ったんですけど。
var parameters = PluginManager.parameters(pluginName);
var paramKey = JSON.parse(parameters.FileNameAndCharacterName);
var paramSPCN = paramKey[0].CharacterName
結果はUndefined。
js初心者なので全くわからずめちゃくちゃ調べてもわからず……連想配列の中の配列の連想配列の取り方とか検索しても出てきませんし……
で、正解はこれ。
var parameters = PluginManager.parameters(pluginName);
var paramKey = JSON.parse(parameters.FileNameAndCharacterName);
var paramKeyT = paramKey[0]
var paramSPCN = paramKeyT['CharacterName']
つまるところ一回配列から特定の連想配列を取り出さないと参照できないってことなんでしょうか。ちょっと意味がわからないです。
理屈としてはわかるんですよ。一番目の連想配列を取得して、その中からCharacterNameがキーの値を取得してるんでしょうし。だったら最初にやったやつとかでも良くない??? って思っちゃうんです。どういうことなんでしょう……ええ……わからないです……とりあえず、そういうメモでした。参考になれば幸いです。
終わり。
追記(コメント返し)
匿名
var paramSPCN = (paramKey[0]).CharacterName; //でよめませんか?
トリアコンタンさんのデータベース変換プラグインでつくった自作配列はこれでいけます。
式の解釈の優先順位の問題なのかも。
undefinedでした。
なんででしょうかね……
var paramSPCN = (paramKey[0]).CharacterName; //でよめませんか?
返信削除トリアコンタンさんのデータベース変換プラグインでつくった自作配列はこれでいけます。
式の解釈の優先順位の問題なのかも。
残念。括弧に気づくまでこちらも結構四苦八苦したのでいけると思ったのに…jsムツカシイ
削除