Rectangle lag

My rectangle keeps lagging when I try to drag it . It moves but it stops on it’s own . 

-- create object local myRectangle = display.newRect( 100, 100, 50, 20 ) myRectangle:setFillColor( 255 ) physics.addBody(myRectangle, "static", {}) -- touch listener function function myRectangle:touch( event ) if event.phase == "began" then self.markX = self.x -- store x location of object self.markY = self.y -- store y location of object elseif event.phase == "moved" then local x = (event.x - event.xStart) + self.markX local y = (event.y - event.yStart) + self.markY self.x, self.y = x, y -- move object based on calculations above end return true end function scene:enterScene(event) myRectangle:addEventListener( "touch", myRectangle ) end

To make that work you need to use the setFocus feature.  It will behave better and there will be no risk of losing your touch events.  i.e. They will be sure to go to that object.

Try this (may contain typos):

-- create object local myRectangle = display.newRect( 100, 100, 50, 20 ) myRectangle:setFillColor( 255 ) physics.addBody(myRectangle, "static", {}) -- touch listener function function myRectangle:touch( event ) if event.phase == "began" then display.currentStage:setFocus( self, event.id ) self.isFocus = true self.x0 = self.x self.y0 = self.y elseif( self.isFocus ) then local dx = event.x - event.xStart local dy = event.y - event.yStart self.x = self.x0 + dx self.y = self.y0 + dy if event.phase == "ended" then display.currentStage:setFocus( self, nil ) self.isFocus = false end end return true end function scene:enterScene(event) myRectangle:addEventListener( "touch", myRectangle ) end

Thanks it works 

To make that work you need to use the setFocus feature.  It will behave better and there will be no risk of losing your touch events.  i.e. They will be sure to go to that object.

Try this (may contain typos):

-- create object local myRectangle = display.newRect( 100, 100, 50, 20 ) myRectangle:setFillColor( 255 ) physics.addBody(myRectangle, "static", {}) -- touch listener function function myRectangle:touch( event ) if event.phase == "began" then display.currentStage:setFocus( self, event.id ) self.isFocus = true self.x0 = self.x self.y0 = self.y elseif( self.isFocus ) then local dx = event.x - event.xStart local dy = event.y - event.yStart self.x = self.x0 + dx self.y = self.y0 + dy if event.phase == "ended" then display.currentStage:setFocus( self, nil ) self.isFocus = false end end return true end function scene:enterScene(event) myRectangle:addEventListener( "touch", myRectangle ) end

Thanks it works