Android Question LibGDX Texture Drag&Drop

Andrei_katharzis

New Member
Licensed User
Longtime User
Hello everybody

i'm new to libGDX and of course like any beginner i started to play around with others code

I stop at this example "lGDX_Perf_Smileys" made by "Informatix" and modify it a bit and i was wondering if in this example i have any chance to drag and drop this drawings(smileys)?

so basically we have
-a set of coordinates wrapped in a type()
-a batch do draw a texture over the coordinates given by the type
I've studied some other examples of drag and drop in libGDX and all of them use a World(lgBox2DWorld) and actors or Bodies(lgBox2DBody) witch i don't know how to implement so far.


So the question is : is there any chance to implement a drag&drop function in the given code without re-writing the whole code?

B4X:
Sub Process_Globals
   
   Type typSmiley(X As Float, Y As Float, dX As Int, dY As Int, Color As lgColor)
   Dim timer1 As Timer
End Sub

Sub Globals
   
   Dim Stage As lgScn2DStage
   Dim lGdx As LibGDX
   Dim GL As lgGL
   Dim Batch As lgSpriteBatch
   Dim Camera As lgOrthographicCamera
   
   Dim texSmiley As lgTexture
   Dim lstSmileys As List
   Dim Quantity As Int
End Sub

Sub Activity_Create(FirstTime As Boolean)
   Activity.Title = "libGDX - Performance"
     Dim Config As lgConfiguration
       Config.useAccelerometer = False
       Config.useCompass = False
       Config.useWakelock = True
   'Creates the libGDX surface
   lGdx.Initialize2(Config,"LG")
   
End Sub

Sub Activity_Resume
   'Calls the Resume method of libGDX
   If lGdx.IsInitialized Then lGdx.Resume
End Sub

Sub Activity_Pause (UserClosed As Boolean)

   If lGdx.IsInitialized Then lGdx.Pause
End Sub

Sub LG_Create
   'Initializes the sprite batcher
   Batch.Initialize
   Stage.Initialize("")
   texSmiley.Initialize("smiley.png")
     'Initializes the number of smileys
   Quantity = 1
     'Initializes the timer
   timer1.Initialize("timer",1000)
   timer1.Enabled = False
End Sub

Sub LG_Resize(Width As Int, Height As Int)
   'Sets the camera viewport
   Camera.Initialize
   Camera.SetToOrtho(False)
End Sub

Sub timer_Tick
   
   
   If lstSmileys.IsInitialized  Then
     
     Dim MU As lgMathUtils
     Dim Smiley As typSmiley
   
     Smiley.Initialize
     
     Smiley.X = (Stage.Width / 100) * 20
     Smiley.Y = (Stage.Height /100) *90
     
     Smiley.dX = 0
     Smiley.dY = -2
     Smiley.Color.SetRGBA(MU.RandomFloat2(0.2, 1), MU.RandomFloat2(0.2, 1), MU.RandomFloat2(0.2, 1), 1)
     lstSmileys.Add(Smiley)
     
     Quantity = Quantity +1
   
   
   timer1.Enabled = False
   
   
   Else
     lstSmileys.Initialize
     
   End If

End Sub



Sub LG_Render
   
   'check the limit of the smileys to be draw
   If Quantity < 80  +1 Then
     'if less than desired then continue
       timer1.Enabled = True

     Else
       'else timer.stop
       timer1.Enabled = False
   End If

   'Clears the screen and colors the background in blue
   GL.glClearColor(0, 0, 0.4, 1)
   GL.glClear(GL.GL10_COLOR_BUFFER_BIT)

   'Updates the matrices of the camera
   Camera.Update

   'Uses the coordinate system specified by the camera
   Batch.ProjectionMatrix = Camera.Combined

   Try
     'Updates the position of smileys
     LG_Update

     'Draws the smileys with their new position
     Batch.Begin
       Dim Smiley As typSmiley
       For i = 0 To lstSmileys.Size - 1
         Smiley = lstSmileys.Get(i)
         Batch.Color = Smiley.Color
         Batch.DrawTex2(texSmiley, Smiley.x, Smiley.y, 64dip, 64dip)
       Next
     Batch.End
   Catch
     Log(LastException.Message)
   End Try
End Sub

Sub LG_Update
   'Computes the new position of each smiley

   For i = 0 To lstSmileys.Size - 1

     Dim Smiley As typSmiley = lstSmileys.Get(i)

     Smiley.X = Smiley.X + Smiley.dX
     Smiley.y = Smiley.y + Smiley.dy
     'change direction
     
     If Smiley.Y > ((Stage.Height/100)*80) And Smiley.X = (Stage.Width / 100) * 20  Then
       Smiley.Y = ((Stage.Height/100)*80)
       Smiley.dy = -2
       Smiley.dx = 0
     End If
     
     If Smiley.Y < ((Stage.Height/100)*20) And Smiley.X = (Stage.Width / 100) * 20  Then
       Smiley.Y = ((Stage.Height/100)*20)
       Smiley.dy = 0
       Smiley.dx = 2
     End If
     
     If Smiley.x > Stage.Width-((Stage.Width/100)*20)  Then
       Smiley.x = Stage.Width-((Stage.Width/100)*20)
       Smiley.dx = 0
       Smiley.dy = 2
     End If
   
       If  Smiley.X =  Stage.Width-((Stage.Width/100)*20)  Then
         If Smiley.Y =  Stage.Height-((Stage.Height/100)*20)  Then
           Smiley.Y = ((Stage.Height/100)*20)
       Smiley.dy = 0
       Smiley.dx = -2
           End If
     End If
     
     If Smiley.Y < ((Stage.Height/100)*20)  Then
       Smiley.Y = ((Stage.Height/100)*20)
       Smiley.dy = 0
       Smiley.dx = -2
     End If
     
     If Smiley.x < ((Stage.Width/100)*20)  Then
       Smiley.x = ((Stage.Width/100)*20)
       Smiley.dx = 0
       Smiley.dy = 2
         
     End If
     
   Next
End Sub

End Sub


Any help is much appreciated and sorry for probably English mistakes :D
 
Top