2014-09-29 67 views
0

在我使用Gideros和Lua的游戏中,我希望玩家能够从他们触摸屏幕的点开始画一条直线,直到他们释放的点。但是,当我尝试运行此代码时,我总是收到一条错误消息。下面是代码:Lua Gideros:绘制触摸线

local function onMouseDown(event) 
    event.x = startx 
    event.y = starty 

    event:stopPropagation() 
end 

local function onMouseUp(event) 
    event.x = endx 
    event.y = endy 
    event:stopPropagation() 
    local line = Shape.new() 
    line:setLineStyle(5, 0x0000ff, 1) 
    line:beginPath() 
    line:moveTo(startx,starty) 
    line:lineTo(endx,endy) 
    line:endPath() 

end 

这下一行是在我的代码行66:

scene:addEventListener(Event.MOUSE_DOWN, onMouseDown) 
scene:addEventListener(Event.MOUSE_UP, onMouseUp) 

这里是我设置了 “现场” 的路线:

scene = gideros.class(Sprite) 

这里我的错误消息:

main.lua:66:index'__userdata'找不到 堆栈回溯: main.lua:66:主要区块

有没有人知道我为什么会收到此消息?

+0

哪里是行代码中的66? – 2014-09-30 00:26:22

+0

我刚才添加了这个到我的问题。 – 2014-09-30 00:28:25

回答

0

如果你

scene = gideros.class(Sprite) 

这意味着场景是一类,但你只能到类,而不是类本身的实例事件侦听器添加。

所以这样的事情应该工作:

Scene = gideros.class(Sprite) 
local scene = Scene.new() 
stage:addChild(scene) 
+0

我这样做,现在当我从屏幕上释放我的手指时,它说:main.lua:62:错误的参数#1到'moveTo'(预期的数字,得到零) 堆栈回溯: \t main.lua:62 :在功能 2014-10-01 20:13:16

+0

你正在做错误的方向分配,它应该是'startx = event.x'等 – 2014-10-02 12:53:55

+0

谢谢!这很好用!这里是我的问题的第2部分:http://stackoverflow.com/questions/26370334/lua-gideros-line-with-touch-2也许你可以回答! – 2014-10-14 21:15:03