求教触摸无效

local grid=33
local function gridpos(px,py)
local visiblesize=cc.Director:getInstance():getVisibleSize()
local origin=cc.Director:getInstance():getVisibleOrigin()
local finalx=origin.x+visiblesize.width/2+pxgrid
local finaly=origin.y+visiblesize.height/2+py
grid
return finalx,finaly
end
local snake={{x=0,y=0},{x=-1,y=0},{x=-2,y=0}}
local b={}
local dir={x=-1,y=0}
local function snakeupdate()
for i=1,#snake-1 do
snake[i].x=snake[i+1].x
snake[i].y=snake[i+1].y
end
snake[3].x=snake[3].x+dir.x
snake[3].y=snake[3].y+dir.y
end

local function touch()
local function onTouchBegan(touch,event)
return true
end
local function onTouchEnded(touch,event)
dir.x=0
dir.y=1
end
local listener=cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN)
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED)
local eventDispatcher = cc.Director:getInstance():getDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener,self)
end

local MainScene = class(“MainScene”,cc.load(“mvc”).ViewBase)

function MainScene:onCreate()
– add background image

local bg=display.newSprite("bg.png")
self:addChild(bg)
bg:setPosition(display.cx,display.cy)
local ui=ccui.Button:create("start.png")
self:addChild(ui)
ui:setPosition(display.cx,display.cy/2)

ui:addTouchEventListener(function()
    local new=cc.Scene:create()      
    cc.Director:getInstance():replaceScene(new)
    for i=1,#snake-1 do            
        b[i]=display.newSprite("body.png")
        new:addChild(b[i])            
    end
    local a=display.newSprite("head.png")
    new:addChild(a)
        
    local snaked = function()            
        for i=1,#snake-1 do                                 
            b[i]:setPosition(gridpos(snake[i].x,snake[i].y))
        end            
        a:setPosition(gridpos(snake[3].x,snake[3].y))                
     end
    cc.Director:getInstance():getScheduler():scheduleScriptFunc(snaked,0.3,false)        
    cc.Director:getInstance():getScheduler():scheduleScriptFunc(snakeupdate,0.3,false)
    touch()         
end)
             -- body    

end

return MainScene