出っ張ったブロックと引っ込んだブロックの絵を用意した上で、ブロックをスプライトにして扱うのはどうでしょう。
BSWITCH=2
BBROCK=1
WHILE TRUE
IF 青スイッチ押す && RSWITCH ==0 THEN RSWITCH=1:BSWITCH=0
SPANIM スイッチの色青→赤にするアニメ
ENDIF
IF RSWITCH==1 THEN
SPANIM 赤ブロック出っ張るア二メ
SPANIM 青ブロック引っ込むア二メ
RSWITCH=2
ENDIF
IF RSWITCH==2 THEN
RBROCK=1 :BBROCK=0
ENDIF
VSYNC 1
WEND
変数と管理するフラグの説明
RSWITCH 0:赤スイッチ押されてない1:押された瞬間2:押されている
BSWITCH ↑の青スイッチ版
RBROCK 0:赤いブロックが引っ込んでいる1:出っ張っている
BBROCK ↑の青ブロック版
プログラムの説明
WHILEループに入る前に、BSWITCH=2、BBROCK=1として青スイッチが押されていて、青ブロックが出っ張っているというフラグを立てておく。
以下WHILEループ内の処理
赤スイッチが押されていない状況で、青スイッチが押されたとき、RSWITCHを1にしてBSWITCHを0にすることで、赤スイッチが押された瞬間のフラグを立て、青スイッチは逆に押されていないフラグを立てる。
そしてSPANIM命令でスイッチの色を青から赤にする。
RSWITCHが1になったとき、SPANIM命令で赤ブロックが出っ張るアニメと青ブロックが引っ込むアニメを再生する。
さらにRSWITCHを2にする。
(RSWITCHが1のままだとSPANIM 命令が繰り返され、アニメが動かなくなるのでこれを防いでいます。)
RSWITCHが2の時、赤ブロックが出っ張っているフラグRBROCK==1を立て、青ブロックが引っ込んでいるフラグBBROCK==0を立てる。
あとはWHILEループ内の赤と青、SPANIMでのアニメ再生を逆にして青スイッチを押した時の処理も作ればバッチリ!
(わかりやすいと思って敢えてIF文を改行したり、長い変数名をつけています。)