« 緩和曲線2 | トップページ | 緩和曲線3 »

連結と開放2

VRM5になってから、連結と開放に関するギミックが改変されていたような気がするので、この話を追試してみました。

結論からすると、ghost氏の示した二つの記述例の両方で、Uncouple命令が無視(開放が起こらない)という結果になりました。前者の例で、開放も起こらなくなってしまっているみたいです。なんだこりゃ。

で、試しにレイアウト以外のオブジェクトを対象にしてみると…

BeginFunc MtdUncouple
    VarATS ObjATS
    get ObjATS ATSENSOR9
    Uncouple 1 ObjATS.pTrnNew
    DrawVar ObjATS.pTrnNew
EndFunc

これは上手く行ってしまうんですね。
Uncouple 1 ATSENSOR9.pTrnNew
としても同様に動作しました。

つまり、Uncouple命令の第2引数は、object.variableの形式を受け付けていないわけではありませんね。

やっぱりバグなんですかね?レイアウト内の編成オブジェクト変数を対象にすると失敗するのは。

さて、開放された編成には解放前の編成のスクリプトがコピーされますね。というわけで以下の実験を行ってみましょう。

解放前の編成に、

VarTrain pTrnNew
Var Three
set Three 3

BeginFunc MtdUncouple
    DrawMessage "開放します"
    Uncouple 1 pTrnNew
EndFunc

こんなスクリプトを書きます。

で、開放する前にレイアウトから

Var EidChk
SetEventKey this MtdChk EidChk a

BeginFunc MtdChk
    VarTrain pTrnActive
    GetActiveTrain pTrnActive
    DrawVar pTrnActive.pTrnNew
    DrawVar pTrnActive.Three
EndFunc

こんな感じで編成名をDrawさせると、
    [pTrnNew] : (obj.train) null
    [Three] : 3
をきちんと表します。解放後の、元の編成(名前が変わっていない方)は
    [pTrnNew] : (obj.train) TRAIN8_1
    [Three] : 3
を表示します。ここまではOKです。ごく想定の範囲内です。

ところが、解放後に新しく生成された編成(TRAIN8_1)がアクティブなときにMtdChkを実行すると、ログウィンドウには
    (obj.train) : null
    [(文字化け)] : 3
と表示されました。もちろん、2行目は謎の漢字もしくは記号の羅列になるわけですが。

問題点は二つ。解りやすい方は、変数名"Three"が文字化けして表示されること。まーこれは、大した問題でも無いんじゃないでしょうか。中身の3はただしく参照できてるわけですし。
もう一つは、pTrnNewがあたかも存在しないように見えること。です。これは[大カッコ]により変数名が表示されていないことから、「そう見えて」います。が、本当に存在しないのか、実はどこかに存在しnullが入っているのか、どこかに存在しTRAIN8_1が入っているのかが全く分かりません。これを実際に確かめる方法も思いつきません。

どなたか、何かご存知でしたら教えてください。っつーか、大本営に直接問い合せるべきなんですかね?

|

« 緩和曲線2 | トップページ | 緩和曲線3 »

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 連結と開放2:

« 緩和曲線2 | トップページ | 緩和曲線3 »