Code: Select all
GRAPHICS
REFRESH OFF
GRAPHICS CLEAR 0,0,0
REFRESH
OPTION SPRITE POS CENTRAL
GET SCREEN SIZE scrW, scrH
DRAW COLOR 0,0,0
' Scope "S" contains sprite data
S.w = 60
S.h = 60
S.x = scrW/2
S.y = scrH/2
FOR s = 1 TO 2
  SPRITE s BEGIN S.w, S.h
    GRAPHICS CLEAR 1,1,1
    FOR x = 0 TO S.w*2 STEP 10
      DRAW LINE 0,x TO x,0
      DRAW LINE x-S.w,0 TO x,S.h
    NEXT x
  SPRITE s END
NEXT s
SPRITE 1 AT S.x,       S.y
SPRITE 2 AT S.x + S.w, S.y
SPRITE 1 SHOW
SPRITE 2 SHOW
' Scope "T" contains touch data
T.touch = 0
WHILE 1
  GET TOUCH 0 AS T.x, T.y
  IF T.x <> -1 AND T.y <> -1 THEN
    IF T.touch = 0 THEN
      T.touch = 1
      T.x0 = T.x
      T.y0 = T.y
    END IF
    x = S.x + T.x - T.x0
    y = S.y + T.y - T.y0
    SPRITE 1 AT x,       y
    SPRITE 2 AT x + S.w, y
  ELSE
    IF T.touch = 1 THEN
      T.touch = 0
      GET SPRITE 1 POS S.x, S.y
    END IF
    SLOWDOWN
  END IF
END WHILE
How it often looks when the sprites are moving:

The lines "SPRITE 1 AT x, y" and "SPRITE 2 AT x + S.w, y" are right next to each other, yet it seems that moving Sprite 1 sends an update to the screen before I move Sprite 2. Is there any way to force smart BASIC to not refresh Sprite positions until I tell it to? Something like:
Code: Select all
SPRITE REFRESH OFF
' ...
SPRITE 1 AT x,       y
SPRITE 2 AT x + S.w, y
SPRITE REFRESH