Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local dragTargets = {}
- local testWell = display.newRect(0, 0, 60, 60)
- testWell:setFillColor(0xFF, 0x00, 0x00)
- testWell.x, testWell.y = display.contentWidth / 2, display.contentHeight * 0.25
- function testWell:touch(event)
- local carry = dragTargets[event.id]
- if event.phase == "ended" and carry then
- carry:Drop(self.x, self.y)
- self:setFillColor(0x00, 0x00, 0xFF)
- return true
- end
- end
- testWell:addEventListener('touch', testWell)
- local testDrag = display.newCircle(0, 0, 28)
- testDrag:setFillColor(0x00, 0xFF, 0x00)
- testDrag.x, testDrag.y = display.contentWidth / 2, display.contentHeight * 0.75
- function testDrag:Drop(x, y)
- self.oldX, self.oldY, self.id = nil
- self.x, self.y = x or self.x, y or self.y
- dragTargets[self], dragTargets[self.id] = nil
- Runtime:removeEventListener('touch', self)
- end
- function testDrag:touch(event)
- if event.id == self.id then
- if event.phase == "moved" then
- self.x, self.y = event.x, event.y
- elseif event.phase == "ended" then
- self:Drop(self.oldX, self.oldY)
- end
- end
- end
- function startDrag(event)
- local id, target = event.id, event.target
- if event.phase == "began" then
- dragTargets[id], dragTargets[target] = target, id
- target.id = id
- target.oldX, target.oldY = target.x, target.y
- Runtime:addEventListener('touch', target)
- return true
- end
- end
- testDrag:addEventListener('touch', startDrag)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement