|
こんにちわ。
>Sub 移動開始()やfunctionを実行しているときに、FlgがFalseになることで
>一旦プロシージャを抜けるというのが、理解できません。
まず、このフラグがTrueになってるのはどういう状態のときか・・・ってことを
考えればええんです。
提示したコードの中で Flg = True が書いてあるのは1箇所だけ。
Sub 移動開始()の部分ですわな。
Flg = True にしてから「頂点の移動」っていうFunctionを実行してます。
この頂点の移動が中断されることなく終了したら、Functionの最後で
Flg = False で元に戻してます。
つまり、頂点を移動させる処理のあいだだけフラグが立つわけです。
これが基本やね。
前もって「三角形の描画」で、CurrentPosを0に設定してるから、最初に
「移動開始」を実行するときは
CurrentPos = 頂点の移動(CurrentPos) → CurrentPos = 頂点の移動(0)
ということになります。
このまま中断がなければ、CurrentPosは使わずにそのままコードは終了しますわなー
使う必要がないからです。
・・・で、中断する場合は別のマクロ(一時停止)がループに割り込んで、
Flg = False に設定してしまうので、ループ内の次の判定では
中断したループの回目を戻り値に設定して、Functionは終了します。
この戻り値がCurrentPosに代入されるんです。
再開用のデータを記憶させてるわけです。
再開するときはこのデータを「頂点の移動」に渡すことになるんやね。
CurrentPos = 頂点の移動(CurrentPos) → CurrentPos = 頂点の移動(ループ再開用カウンタの値)
ってことです。
こうすると、再開時の頂点位置を正しく設定したうえで、
まだ済んでいないループの回数分だけ頂点が移動することになります。
以上のような理由から、「頂点を元に戻す」ではCurrentPosを最初の状態の0に戻してます。
また、各プロシージャの先頭にフラグの判定が入ってるんは、
実行したらあかん状態のときに実行させないためです。
頂点の移動中に図の削除なんかを実行したらマズいでっしゃろ?
こんな説明でよろしいでっか?
ほな。
|
|