lua box2d 怎么使用碰撞回调啊

.lua

local winSize = cc.Director:getInstance():getWinSize()

local PTM_RATIO = 32.0

local gravity = b2Vec2(0.0, -10.0)
self._world = b2World:new_local(gravity)

 **self._world:SetContactListener(nil)**   ????  

local groundBodyDef = b2BodyDef:new_local()
groundBodyDef.position = b2Vec2(0, 0)
local groundBody = self._world:CreateBody(groundBodyDef)

local groundEdge = b2EdgeShape:new_local()
local boxShapeDef = b2FixtureDef:new_local()
boxShapeDef.shape = groundEdge

groundEdge:Set(b2Vec2(0,0), b2Vec2(winSize.width/PTM_RATIO, 0))
groundBody:CreateFixture(boxShapeDef)

groundEdge:Set(b2Vec2(0,0), b2Vec2(0, winSize.height/PTM_RATIO))
groundBody:CreateFixture(boxShapeDef)

groundEdge:Set(b2Vec2(0, winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO))
groundBody:CreateFixture(boxShapeDef)

groundEdge:Set(b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, 0))
groundBody:CreateFixture(boxShapeDef)

local bodySprite = cc.Sprite:create("HelloWorld.png")
                   :addTo(self)

-- Create body and shape
local bodyDef = b2BodyDef:new_local()
bodyDef.type = b2_dynamicBody
bodyDef.position:Set(300 / PTM_RATIO, 500 / PTM_RATIO)
local _body = self._world:CreateBody(bodyDef)

local shape = b2PolygonShape:new_local()
shape:SetAsBox(195 / 2 / PTM_RATIO, 270 / 2 / PTM_RATIO);

local fixtureDef = b2FixtureDef:new_local()
fixtureDef.shape = shape
_body:CreateFixture(fixtureDef)
_body.userData = bodySprite

self.body_list = {}

table.insert(self.body_list, _body)

local function tick(dt)

    self._world:Step(dt, 8, 3)

    if self.body_list ~= nil then
        for i, body in ipairs(self.body_list) do           
                local sprite = body.userData               
                sprite:setPosition(cc.p(body:GetPosition().x * PTM_RATIO, body:GetPosition().y * PTM_RATIO))
                sprite:setRotation(-1 * 57.29577951*(body:GetAngle()))
        end
    end
end

cc.Director:getInstance():getScheduler():scheduleScriptFunc(tick, 1 / 60, false)

有没有例子啊