今回はBooleanに関するデータの扱い方について学びます。
Booleanは真偽値を扱うデータでFalse(偽)かTrue(真)の2通りしかありません。
使い方も限られていて、フラグ(○○したかどうか)ということに使います。
簡単なサンプルをご覧ください。(Flag.fsml)
まず、
Boolean.Value、
Scope.SetValueを使いFlagという変数にFalseを入れておきます。
次に
Logic.Anyを使います。
これは接続されている緑色のフローうちいずれかが使われたらOutイベントが起こるというものです。
In0がまず使われるので、Outイベントが使用されます。
次に
Logic.Ifですが、Conditionには(NOT Flag)が接続されているので、
Flag==FalseのときにOnTrue、Flag==TrueのときにOnFalseが使用されます。
今はFlag==FalseなのでOnTrueイベントが使用されます。
次に、
Scope.SetValueでFlagという変数にTrueを入れます。(※)
そして、「Flag was False」という文字列を表示します。
そして、もう一度
Logic.Anyに戻ってきてOutが使用されます。
再度
Logic.Ifですが、現在Flag==TrueなのでOnFalseが使用されます。
「Flag was True」が表示され、スクリプトは終了します。
-----------------------------------------------------------------------------------------------------------
余談ですが、Flagという変数にTrueを入れる部分(※)を実行しないとこのスクリプトは無限ループに陥ります。
1分ぐらいでとまるので落ち着いてください。
Logic.AnyはRepeat.*を使わずに反復処理を行う唯一の方法になります。
-----------------------------------------------------------------------------------------------------------
このような感じでフラグ動作を行うことができます。
とはいうものの、Booleanは別になくてもいいデータ型です。
Int32型で0ならFalse、1ならTrueと決めてしまえば
Scope.GetValueのところが
Scope.GetValueと
Int32.Equalに増えるだけです。
ですが、2値しかとりえないので意図が明確になり、久しぶりに自分のスクリプトを見たときに
首を傾げる機会は少なくなるでしょう。
今回のまとめですが
・
Boolean.ValueでBooleanのデータを作成
・
Logic.Anyで反復処理も行える
となっています。
今回の講座に関する質問はこのスレッドで受け付けています。
次回はFlowScriptの細かい動作について行う予定です。