I've problem with scroll image on iPhone
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
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