フラグを変数で管理したいなら配列を使えばできます。
FOR I=0 TO 511
FLG[I]=SPUSED(I)
NEXT
保存する必要がないなら「SPUSED」だけでその都度取れますが。
SPHIDEなどで見えないようにしているだけならSPVARを使うといいですよ。スプライト自体に変数を持たせることができます。
B=BUTTON()
としてるんですから
B1=BUTTON(1)
B3=BUTTON(3)
も書かないと。
あとは↑に書いたとおりに書けばいけるはず。
IF B AND 8 THEN X=X+1
IF B1 AND 8 THEN SPANIM 0,"I", 8,497 ,8,496 ,0
IF B3 AND 8 THEN SPCHR 0,496
SPSETはそのスプライト番号を初期化してキャラ設定する命令ですので、最初に一回だけ実行します。途中でやると、座標その他せっかく設定している内容が全部初期化されちゃいますよ。
キャラクターの絵だけを変えるのはSPCHRです。SPCHRは、SPANIMの"I"で絵をアニメーションさせているのを止める働きもします。
やり方は色々ありますが、その1つとして。
BUTTONにはいくつか種類があって、
BUTTON()・・・押され続けている
BUTTON(1)・・・押された瞬間
BUTTON(3)・・・離された瞬間
です。
それぞれを、B、B1、B3とすると、
IF B AND 8 ~ ・・・右に移動する(X=X+1)
IF B1 AND 8 ~ ・・・アニメを開始する(SPANIM)
IF B3 AND 8 ~ ・・・アニメを止める(SPSTOPかSPCHR)
という風にすればどうでしょうか。
SPANIMの最後のパラメーターは「0」(繰り返し)で!