2015-03-03 1 views
0

Я работаю над игрой. Игра включает (одну часть), получая позиции x и y события касания, . и отслеживать его, когда он движется и добавления X/Y значения в таблице у меня есть, что вниз погладить Однако, когда я пытаюсь создать линию из таблицы дает мне эту ошибку:.Что означает: «плохой аргумент от -1 до« newLine »(ожидаемый прокси, полученный нуль)

/Users/jordanmcbride/Desktop/Programing/Lua Projects/When Balls Drop/main.lua:21: bad argument #-1 to 'newLine' (Proxy expected, got nil) 
stack traceback: 
    [C]: in function 'newLine' 
    /Users/jordanmcbride/Desktop/Programing/Lua Projects/When Balls Drop/main.lua:21: in function </Users/jordanmcbride/Desktop/Programing/Lua Projects/When Balls Drop/main.lua:8> 
    ?: in function <?:221> 

у меня нет идея, что это делает ...

код в вопросе, с линией комментировал.

function drawLineTouchListener(event) 
    if event.phase == "began" then 
     currx = event.x 
     curry = event.y 
     table.insert(linePositions, currx) 
     table.insert(linePositions, curry) 
    elseif event.phase == "moved" then 
     currx = event.x 
     curry = event.y 
     table.insert(linePositions, currx) 
     table.insert(linePositions, curry) 
    elseif event.phase == "ended" then 
     -- This is where the code does't work. 
     line = display.newLine(linePositions) 
     test = { 
     0, 0, 
     20, 20, 
     40, 40, 
     60, 60, 
     80, 80} 

     line2 = display.newLine(test) 
     line2:setStrokeColor(black) 
    end 
    print("x: "..currx.." y:"..curry) 
end 

Вот весь мой код:

-- Hides the status bar at the top of the screen 
display.setStatusBar(display.HiddenStatusBar) 

print("App Starting!") 

linePositions = {} 

function drawLineTouchListener(event) 

    if event.phase == "began" then 
     currx = event.x 
     curry = event.y 
     table.insert(linePositions, currx) 
     table.insert(linePositions, curry) 
    elseif event.phase == "moved" then 
     currx = event.x 
     curry = event.y 
     table.insert(linePositions, currx) 
     table.insert(linePositions, curry) 
    elseif event.phase == "ended" then 
     line = display.newLine(linePositions) 
     test = { 
     0, 0, 
     20, 20, 
     40, 40, 
     60, 60, 
     80, 80} 

     line2 = display.newLine(test) 
     line2:setStrokeColor(black) 
    end 


    print("x: "..currx.." y:"..curry) 

end 

function playButtonTouch (event) 

    if (event.phase == "ended") then 

    end 
end 

function highScoreButtonTouch (event) 

    if (event.phase == "ended") then 

    end 
end 

function quitButtonTouch (event) 

    if (event.phase == "ended") then 
     os.exit(0) 
    end 
end 


function displayMenu() 
    mainMenuGroup = display.newGroup() 

    title = display.newImage(mainMenuGroup, "Title.png", display.contentCenterX, 20) 
    title:scale(.3, .3) 

    playButton = display.newImage(mainMenuGroup, "Play Button.png", display.contentCenterX, display.contentHeight - 300) 
    playButton:scale(.3, .3) 

    quitButton = display.newImage(mainMenuGroup, "Quit Button.png", display.contentCenterX, display.contentHeight - 200) 
    quitButton:scale(.3, .3) 

    highScoreButton = display.newImage(mainMenuGroup, "Highscore Button.png", display.contentCenterX, display.contentHeight - 100) 
    highScoreButton:scale(.3, .3) 

    playButton:addEventListener("touch", playButtonTouch) 

    quitButton:addEventListener("touch", quitButtonTouch) 

    highScoreButton:addEventListener("touch", highScoreButtonTouch) 
end 


--Creates a solid white background that doubles for a touch listner 
background = display.newRect(display.contentCenterX, display.contentCenterY, display.contentWidth, display.contentHeight+100) 
background:setFillColor(1, 1, 1) 

background:addEventListener("touch", drawLineTouchListener) 

displayMenu() 
+0

Вы просмотрели документацию для ['display.newLine'] (http://docs.coronalabs.com/api/library/display/newLine.html)? – greatwolf

+0

@ greatwolf Да, все, что я получил от него, это то, как создать линию с предопределенными точками. Пример: local myLine = display.newLine (0,0, 100,100). И что вы не можете нажать на них ... –

+1

попробуйте 'unpack (linePositions)' и передайте это 'display.newLine'. – greatwolf

ответ

0

Ваша проблема связана с тем, что вы передаете таблицу, когда функция ожидает отдельных аргументов.

Вместо этого используйте unpack(linePositions), который будет «распаковать« все в таблице (возвращая его как кортеж).

Примечание что в Lua 5.2 и позже, это table.unpack.