Problem with scroll image

Previous topic - Next topic

Neurox

I've problem with scroll image on iPhone   :rant:
On windows the program run very well.
I'm crazy out, If I touch the image without draging, image not scrolling but change position.

The image "mappa2.png" is here http://www.borzini.it/mappa2.png

Code (glbasic) Select

// --------------------------------- //
// Project: TestScroll
// Start: Friday, May 18, 2012
// IDE Version: 10.283

TYPE TIPOMAPPA
   mmx
   mmy
   mmaxx
   mmaxy
ENDTYPE

SETCURRENTDIR("Media") // go to media files

GLOBAL Mappa AS TIPOMAPPA
GLOBAL GNoldx, GNoffx
GLOBAL GNoldy, GNoffy
GLOBAL GAmappa%[],GAmappa2%[]
GLOBAL mx,my,b1,b2
LOCAL LBciclo


DIM GAmappa[0]
DIM GAmappa2[320*480]

LBciclo = TRUE

SYSTEMPOINTER TRUE

CaricaMappa("mappa2.png",1024,1024)
AggiornaMappa(100,100,TRUE)

LOCAL LNi

WHILE LBciclo
   DisegnaMappa()
   SHOWSCREEN
   SETACTIVEMOUSE 0
      GNoldy = my
  GNoldx = mx
   MOUSESTATE mx,my,b1,b2
   IF b1 = TRUE
      ControllaOffset(mx,my)
      GNoldy = my
  GNoldx = mx
      AggiornaMappa(GNoffx,GNoffy)
   ELSE
      GNoldy = my
  GNoldx = mx
  GNoffx = 0
  GNoffy = 0
   ENDIF
WEND

FUNCTION ControllaOffset: FNx, FNy
IF FNx > GNoldx
GNoffx = FNx - GNoldx
ELSE
GNoffx = -1*(GNoldx - FNx)
ENDIF

IF FNy > GNoldy
GNoffy = FNy - GNoldy
ELSE
GNoffy = -1*(GNoldy - FNy)
ENDIF
ENDFUNCTION

FUNCTION DisegnaMappa:
   DRAWSPRITE 100,0,0
   PRINT "X:"+mx+" d:"+GNoldx+" f:"+GNoffx,0,0
   PRINT "Y:"+my+" d:"+GNoldy+" f:"+GNoffy,160,0
   PRINT "MappaX:"+ Mappa.mmx +" MappaY:"+ Mappa.mmy ,0,20   
ENDFUNCTION

FUNCTION AggiornaMappa: FNx,FNy,FNforce = FALSE
LOCAL LNi,LNii,LNx,LNy,LNoffx,LNoffy
LOCAL LNspr%,LNw,LNh
IF ABS(FNx) < 2 AND ABS(FNy) < 2 AND FNforce = FALSE
ELSE
   IF FNx > 0
      INC Mappa.mmx, FNx
      IF Mappa.mmx > 1023 THEN Mappa.mmx = 1023
   ELSE
      IF FNx < 0
         DEC Mappa.mmx, ABS(FNx)
         IF Mappa.mmx < 0 THEN Mappa.mmx = 0
      ENDIF
   ENDIF

   IF FNy > 0
      INC Mappa.mmy, FNy
      IF Mappa.mmy > 1023 THEN Mappa.mmy = 1023
   ELSE
      IF FNy < 0
         DEC Mappa.mmy, ABS(FNy)
         IF Mappa.mmy < 0 THEN Mappa.mmy = 0
      ENDIF
   ENDIF

   IF Mappa.mmx > 703 THEN Mappa.mmx = 703 //1023 - 320
   IF Mappa.mmy > 543 THEN Mappa.mmy = 543 //1023 - 480
   IF Mappa.mmx < 0 THEN Mappa.mmx = 0
   IF Mappa.mmy < 0 THEN Mappa.mmy = 0


   //
   LNoffx = Mappa.mmx
   LNoffy = Mappa.mmy

   LNi = 0
   FOR LNy = LNoffy TO (LNoffy + 479)
      FOR LNx = LNoffx TO (LNoffx + 319)
         GAmappa2[LNi] = GAmappa[LNx+LNy*1024] //copio la parte della mappa
         INC LNi,1
      NEXT
   NEXT

   
   LNspr=100; LNw=320; LNh = 480
   IF MEM2SPRITE(GAmappa2[],LNspr,LNw,LNh) = TRUE
   ELSE
      DEBUG "errore aggiorna mappa"
   ENDIF
ENDIF

ENDFUNCTION

FUNCTION CaricaMappa: FSmappa$,FNx%,FNy%
   IF LOADSPRITEMEM(FSmappa$,FNx,FNy,GAmappa[]) = TRUE
      Mappa.mmx = 0
      Mappa.mmy = 0
      Mappa.mmaxx = FNx
      Mappa.mmaxy = FNy
   ELSE
      DEBUG "errore carica mappa"
      //Errore
   ENDIF
ENDFUNCTION
Paolo Borzini | paolo@borzini.it
The WhiteFly Software | www.thewhitefly.it
Service on line for screen printers | www.4pellicole.it