ページ 11

【解決済み】TemplateEvent.js で セルフ変数に文字列を代入するとき

Posted: 2019年10月21日(月) 21:25
by MEIKOI
トリアコンタン様の

テンプレートイベント プラグインにて

セルフ変数に文字列を代入したいのですが

イベントコマンドのスクリプトにて
this.controlSelfVariable(100, 0, 'AAA' , formulaFlg);
文章の表示
\sv[100]
上記で0と表示されたので

this.controlSelfVariable(100, 0, 'AAA' , true);
文章の表示
\sv[100]
でも0と表示されました。

数値の時は、うまくいってたのですが
なにか間違っていると思うのですが・・・何が違うのかわかりません。
どなたかご教授ください・・・

Re: TemplateEvent.js で セルフ変数に文字列を代入するとき

Posted: 2019年10月21日(月) 22:11
by MEIKOI
ヘルプに

※セルフ変数に数値以外を設定したい場合は、スクリプトで指定してください。

と記載があったので、スクリプトで書いていたのですが、

普通にプラグインコマンドで

TE_SET_SELF_VARIABLE [インデックス] [操作種別] [オペランド]

の形で指定したら、文字列が入りました^^;

とりあえず、スクリプトでの書き方はわかりませんので

このままにしておきますが、一応解決はしました。

ありがとうございました。

Re: TemplateEvent.js で セルフ変数に文字列を代入するとき

Posted: 2019年10月22日(火) 00:21
by ecf5DTTzl6h6lJj02
こんばんは。

スクリプトで書く書き方ですが、
this.controlSelfVariable(100, 0, 'AAA'); もしくは this.controlSelfVariable(100, 0, 'AAA', false);
とすると、正しく動作します。

this.controlSelfVariable(100, 0, 'AAA' , formulaFlg);、this.controlSelfVariable(100, 0, 'AAA' , true);でうまくいかなった理由ですが、
4番目の引数は、3番目の引数をeval関数で評価するかのフラグで、ここに falseや0以外の値が設定(記述)されていると、3番目の値をeval関数を使って評価します。
eval関数は渡された文字列をJavaScriptの構文として評価する関数なので、
3番目の値 'AAA'(丁度文字列になっている) が 変数 AAA の値という式にかわってしまい、結果 変数AAA の中身である0が返ってきています。

Re: TemplateEvent.js で セルフ変数に文字列を代入するとき

Posted: 2019年10月22日(火) 07:22
by MEIKOI
ご回答ありがとうございます!

「4番目の引数は、3番目の引数をeval関数で評価するかのフラグ」
「eval関数は渡された文字列をJavaScriptの構文として評価する関数」
とても勉強になりました!ありがとうございました!