MainScene.lua
local Snake = require"app.Snake"
local MainScene = class("MainScene", function()
return display.newScene("MainScene")
end)
local cMovespeed = 0.3
function MainScene:onEnter()
self.snake = Snake.new(self)
self:processInput()
local tick = function()
self.snake:Update()
end
cc.Director:getInstance():getScheduler():scheduleScriptFunc(tick,cMovespeed,false)
end
local function vector2Dir(x,y)
if math.abs(x) > math.abs(y) then
if x<0 then
return "left"
else
return "right"
end
else
if Y < 0 then
return "up"
else
return "down"
end
end
end
function MainScene:processInput()
local function onTouchBegan(touch, event)
local location = touch:getLocation()
local visibleSize = cc.Director:getInstance():getVisibleSize()
local origin = cc.Director:getInstance():getVisibleOrigin()
local finaX = location.x - (origin.x + visibleSize.width/2)
local finaY = location.y - (origin.y + visibleSize.height/2)
local dir = vector2Dir(finaX,finaY)
self.snake:SetDir(dir)
end
local listener = cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN)
local eventDispatcher = self:getEventDispatcher()
eventDispatcher:addEventWithSceneGraphPriority(listener,self)
end
function MainScene:onExit()
end
return MainScene
是addEventListenerWithSceneGraphPriority