停止する時間を指定できますので、処理中にウェイトを挟むときとかに便利なやつです。
しかし、このスクリプトステップには罠があります。
デモ用ファイル
罠を再現するために作りました。
「メイン処理」ボタンを押すと、4秒間停止した後に、「終了」のダイアログが出るようになってます。
ところが、この停止している間に「割り込み処理」ボタンを押すと、停止したまま動かなくなります。
上のメニューバーに出ている「続行」を押すことでまた動き始めるのでよさそうなもんですが、
メニューバーは実用時には消しておくのが普通なので、実用時にこれが起きると、再開する方法がありません。
これがスクリプト一時停止の罠です。
やばくないですか?
というわけで今回は、この罠をやっつけたいと思います。
主役はポップオーバーさん。
レイアウト内に配置して、クリックしたときだけに表示させたいフィールドなどを置いておく、といったのが普通の使い方なのですが。
今回はこれを画面外に配置します(右上)。
スクリプト一時停止/実行の前に、このポップオーバーを開くようにしてあげます(ポップオーバーを開くというスクリプトステップはありませんので、ポップオーバーに名前をつけて、オブジェクト移動)。
すると、こういうふうになります。
ポップオーバーが開いているので、「割り込み処理」ボタンは押せません。
これで一件落着……に見えるんですが、実はそうじゃありません。
これだけだと、ポップオーバーがカバーしきれていない隙間をクリックしたとき、ポップオーバーが閉じてしまい、「割り込み処理」ボタンを押せるようになってしまいます。
ですので、追加で、スクリプト一時停止中は、ポップオーバーを閉じさせない細工をする必要があります。
具体的には、ポップオーバーのスクリプトトリガ・OnObjectExitにポップオーバーを閉じさせないためのスクリプトを設定します。
ポップオーバーから脱出されそうなときに、監視をさせるようなイメージ。
この監視網を張ってやれば、目的達成です。
ポップオーバーがレイアウトを守っているので、一時停止中にボタンは押せませんし、たとえ画面端をクリックされようとも、ポップオーバーが閉じることはありません。
何をしようが、4秒後には「終了」のダイアログが必ず表示されるというわけです。
ポップオーバーさん+監視スクリプト=鉄壁?
0 件のコメント:
コメントを投稿