Transition To Loop

I’m still trying to move an object in a square movement and I’m having two problems.  My code is below

  1.  It goes the full square but then it stops.  I cannot get it to loop.

I would really appreciate any thoughts on how to make the loop continue.

  1. This method is causing a bad memory leak.  I’ve tried pausing the timers and transitions in multiple places but it seem to stop the code.

I would really appreciate any thoughts on how to plug this memory leak.

THANKS!

Lori


–FUNCTION TO MOVE OBJECT


function objectMovement1(event)     

   objectMove.pathData = loadsave.loadTable(“pathData.json”) 

   pocket1X = objectMove.pathData.pocket1X

   pocket1Y = objectMove.pathData.pocket1Y

   if pocket1X ==384 and pocket1Y==253 then

      objectMove.pathData.pocket1X = 680

      objectMove.pathData.pocket1Y = 253

      loadsave.saveTable(objectMove.pathData, “pathData.json”)

      local path1a = transition.to(pocket1, { time=8000, x=680, y = 253, iterations=1 } )

      local path1b = transition.to(pocketSensor1, { time=8000, x=680, y = 253, iterations=1 } )

   end

  local pathTimer1 = timer.performWithDelay(8000, objectMovement2,1)

end


–FUNCTION FOR THE 2ND   MOVEMENT


function objectMovement2()     

   objectMove.pathData = loadsave.loadTable(“pathData.json”) 

   pocket1X = objectMove.pathData.pocket1X

   pocket1Y = objectMove.pathData.pocket1Y

   if pocket1X ==680 and pocket1Y==253 then

      objectMove.pathData.pocket1X = 680

      objectMove.pathData.pocket1Y = 840

      loadsave.saveTable(objectMove.pathData, “pathData.json”)

      local path2a = transition.to(pocket1, { time=8000, x=680, y = 840, iterations=1 } )

      local path2b = transition.to(pocketSensor1, { time=8000, x=680, y = 840, iterations=1 } ) 

   end

   local pathTimer2 = timer.performWithDelay(8000, objectMovement3,1)

end


–FUNCTION FOR THE 3RD   MOVEMENT


function objectMovement3()     

   objectMove.pathData = loadsave.loadTable(“pathData.json”) 

   pocket1X = objectMove.pathData.pocket1X

   pocket1Y = objectMove.pathData.pocket1Y

   if pocket1X ==680 and pocket1Y==840 then

      objectMove.pathData.pocket1X = 100

      objectMove.pathData.pocket1Y = 840

      loadsave.saveTable(objectMove.pathData, “pathData.json”)

      local path3a = transition.to(pocket1, { time=8000, x=100, y = 840, iterations=1 } )

      local path3b = transition.to(pocketSensor1, { time=8000, x=100, y = 840, iterations=1 } )

      end

      local pathTimer3 = timer.performWithDelay(8000, objectMovement4,1)

end


–FUNCTION FOR THE 4TH  MOVEMENT


function objectMovement4()     

   objectMove.pathData = loadsave.loadTable(“pathData.json”) 

   pocket1X = objectMove.pathData.pocket1X

   pocket1Y = objectMove.pathData.pocket1Y

   if pocket1X ==100 and pocket1Y==840 then

      objectMove.pathData.pocket1X = 100

      objectMove.pathData.pocket1Y = 253

      loadsave.saveTable(objectMove.pathData, “pathData.json”)

       local path4a = transition.to(pocket1, { time=8000, x=100, y = 253, iterations=1 } )

       local path4b = transition.to(pocketSensor1, { time=8000, x=100, y = 253, iterations=1 } )

      end

     

      local pathTimer4 = timer.performWithDelay(8000, objectMovement5,1)

end


–FUNCTION FOR THE 5TH   MOVEMENT


function objectMovement5()     

   objectMove.pathData = loadsave.loadTable(“pathData.json”) 

   pocket1X = objectMove.pathData.pocket1X

   pocket1Y = objectMove.pathData.pocket1Y

   if pocket1X ==100 and pocket1Y==253 then

      objectMove.pathData.pocket1X = 383

      objectMove.pathData.pocket1Y = 253

      loadsave.saveTable(objectMove.pathData, “pathData.json”)

      local path5a = transition.to(pocket1, { time=8000, x=383, y = 253, iterations=1 } )

      local path5b = transition.to(pocketSensor1, { time=8000, x=383, y = 253, iterations=1 } )

      end

       local pathTimer5 = timer.performWithDelay(8000, objectMovement6,1)

end


–FUNCTION FOR THE 6TH   MOVEMENT


 function objectMovement6()   

   objectMove.pathData.pocket1X = 384

   objectMove.pathData.pocket1Y = 253

   loadsave.saveTable(objectMove.pathData, “pathData.json”)

  

  pocket1.x = 384;  pocket1.y = 253

   pocketSensor1.x = 384; pocketSensor1.y = 253

local pathTimer6 = timer.performWithDelay(100, objectMovement1,1)

end

–SCENE SHOW : IF


  --SAVE OBJECT MOVE STARTING POINT

  -----------------------------------------------

  objectMove.pathData.pocket1X = 384

  objectMove.pathData.pocket1Y = 253

  loadsave.saveTable(objectMove.pathData, “pathData.json”)

  print (“in Scene Show BEFORE screen loads”)

  local startMovement = transition.to(objectMovement1(), { time=1000, iterations=1 } )


–EVENT LISTENERS  for MOVING OBJECTS

------------------------------------------------------- 

Runtime:addEventListener( “enterFrame”,objectMovement1)

https://www.youtube.com/watch?v=W9-VtxGK2iE&feature=youtu.be&hd=1

Here is a unified mover example, hope it helps:

local function squareMover( obj, loops, size, time ) size = size or 100 time = (time or 1000)/4 loops = loops or 1 local corner = 1 local corners = {} corners[1] = { obj.x, obj.y } corners[2] = { obj.x, obj.y - size } corners[3] = { obj.x + size, obj.y - size } corners[4] = { obj.x + size, obj.y } local function nextMove( self ) if( corner == 1 and loops \<= 0 ) then return end corner = corner + 1 if( corner \> 4 ) then corner = 1 loops = loops - 1 end transition.to( self, { x = corners[corner][1], y = corners[corner][2], time = time, onComplete = nextMove }) end nextMove( obj ) end local tmp = display.newCircle( 150, 150, 10 ) squareMover( tmp ) local tmp2 = display.newCircle( 300, 150, 10 ) squareMover( tmp2, 2 )

WOW - THANK YOU SO MUCH!!!

I adapted to my table objects and it works exactly as I envisioned and it isn’t causing a memory leak.

I really appreciate the help.

Have a great day.

Lori

https://www.youtube.com/watch?v=W9-VtxGK2iE&feature=youtu.be&hd=1

Here is a unified mover example, hope it helps:

local function squareMover( obj, loops, size, time ) size = size or 100 time = (time or 1000)/4 loops = loops or 1 local corner = 1 local corners = {} corners[1] = { obj.x, obj.y } corners[2] = { obj.x, obj.y - size } corners[3] = { obj.x + size, obj.y - size } corners[4] = { obj.x + size, obj.y } local function nextMove( self ) if( corner == 1 and loops \<= 0 ) then return end corner = corner + 1 if( corner \> 4 ) then corner = 1 loops = loops - 1 end transition.to( self, { x = corners[corner][1], y = corners[corner][2], time = time, onComplete = nextMove }) end nextMove( obj ) end local tmp = display.newCircle( 150, 150, 10 ) squareMover( tmp ) local tmp2 = display.newCircle( 300, 150, 10 ) squareMover( tmp2, 2 )

WOW - THANK YOU SO MUCH!!!

I adapted to my table objects and it works exactly as I envisioned and it isn’t causing a memory leak.

I really appreciate the help.

Have a great day.

Lori