I only want one circle to display so that it can “roll on the line”. Help is much appreciated. Here is the code:
local lineTable = {}
local lineWidth = 12
local lineColor = {R=math.random90,2550,G=math.random(0,255), B=math.random(0,255)}
local newLine = function(event)
local function drawLine()
local line = display.newLine(linePoints[#linePoints-1].x,linePoints[#linePoints-1].y,linePoints[#linePoints].x,linePoints[#linePoints].y)
line:setColor(lineColor.R, lineColor.G, lineColor.B);
line.width=lineWidth;
lineTable[i]:insert(line)
local physics = require(“physics”)
physics.start()
physics.setDrawMode(“normal”)
local ball = display.newCircle(0, 10, 20)
ball:setFillColor(0, 100, 0)
physics.addBody(ball, “dynamic”, {bounce=0.3, radius=10, friction=0.5})
physics.addBody(line, “static”, { bounce= -1, density=0.3, friction=0.7, shape = lineshape})
local circle = display.newCircle(linePoints[#linePoints].x,linePoints[#linePoints].y,lineWidth/2)
circle:setFillColor(lineColor.R, lineColor.G, lineColor.B)
lineTable[i]:insert(circle)
end
if event.phase==“began” then
i = #lineTable+1
lineTable[i]=display.newGroup()
display.getCurrentStage():setFocus(event.target)
local circle = display.newCircle(event.x,event.y,lineWidth/2)
circle:setFillColor(lineColor.R, lineColor.G, lineColor.B)
lineTable[i]:insert(circle)
linePoints = nil
linePoints = {};
local pt = {}
pt.x = event.x;
pt.y = event.y;
table.insert(linePoints,pt);
elseif event.phase==“moved” then
local pt = {}
pt.x = event.x;
pt.y = event.y;
if not (pt.x==linePoints[#linePoints].x and pt.y==linePoints[#linePoints].y) then
table.insert(linePoints,pt)
drawLine()
end
elseif event.phase==“cancelled” or “ended” then
display.getCurrentStage():setFocus(nil)
i=nil
end
return true
end
local erase = function()
for i = 1, #lineTable do
lineTable[i]:removeSelf()
lineTable[i] = nil
end
return true
end
Runtime:addEventListener(“touch”,newLine)