以上のことを元にすると押した瞬間を取得できるBUTTON2関数は引数に「前回押したボタン情報」を入れて、「今回押しているボタン情報」とそれを加味した「押した瞬間のボタン情報」を戻せば良いことが分かります。
BUTTON2 A OUT B,C
C=BUTTON()
B=NOT A AND C
END
これは下記のプログラムに使用すれば使うことが可能です。
WHILE 1
BUTTON2 A OUT B,A
?B
VSYNC 3
WEND
ボタンを押した瞬間を取得するためには上記のように前回押したボタン情報が必要です。
そのため前回のボタン情報を引数に入れてグローバル変数に戻すことでこのBUTTON2関数は「DEF内ではローカル変数のみで動作」するようになっています。
しかし、戻り値として欲しいのは「押した瞬間のボタン情報」であり実際のプログラム内では使用しない前回のボタン情報まで取得するためにBUTTON2 A OUT B,Aと長々と書く必要があるというのは使い勝手があまり良くありません。
そこで関数の使い勝手を向上させるために変数Aをグローバル変数として使うことにします。
DEF BUTTON2()
VAR B,C
C=A
A=BUTTON()
B=NOT C AND A
RETURN B
END
これだとこんな感じですっきりとした使用が可能になります。
VAR A
WHILE 1
B=BUTON2()
?B
WEND
VAR _BUTTON2
WHILE 1
B=BUTON2()
?B
WEND
DEF BUTTON2()
VAR A,B,C
C=_BUTTON2
A=BUTTON()
B=NOT C AND A
_BUTTON2=A
RETURN B
END
これだと_BUTTON2がBUTTON2関数内で使われているグローバル変数と一目瞭然ですね。