2008/3/6 | 投稿者: ghost

結論から言うと、厳密には編成スクリプト内でcall/SetEvent〜命令のパラメータにthisは使わない方がいい、という話。まぁ、言っているボクもそこまで徹底してませんが、来るべき次期自動運転スクロール/フレームワークでは、以下に紹介する方法論を採用したいと思ってます。

*     *     *

まず、基本的なところをおさらいしておきましょう。たとえば“TRAIN1”と命名された編成があるとします。ここに以下の編成スクリプトを書いたとします。
<編成スクリプト>

BeginFunc MtdA
  call this MtdB //thisのMtdBをcallする
EndFunc

BeginFunc MtdB
  SetTimerVoltage 0.0 10000 //10秒かけて停車する
EndFunc
まぁ、普通は書かないスクリプトですが、説明の便宜上こうしておきます。要するに、メソッドMtdAを何らかの方法で実行すると、メソッドMtdBがcallされ、編成が停車する、という流れです。

さて、メソッドMtdAを実行すると常に編成は停車する、と言えるでしょうか。答えはNoです。これは特別な識別子であるthisの挙動によるものです。thisは、ビュワー起動時に「thisが書かれた部品の名前に読み替えてコンパイルされる」という性質を持っています。従って、編成以外の部品であれば、上に示したサンプルスクリプトは常に意図通り動作します(SetTimerVoltageは編成部品以外に書いても意味がないですけども)。

しかし、編成部品についてはこれが成り立ちません。問題になるのは、編成の分割と併合に際してです。

続きを読む
1




AutoPage最新お知らせ