cocos2d-lua貪吃蛇頭和身體重疊停在正中央不動(dòng)?
初學(xué)cocos2d-lua,慕課網(wǎng)照著教程打的,代碼對(duì)過應(yīng)該沒問題啊,為什么教程上run了貪吃蛇就往左走了,我的蛇頭蛇身重疊在正中央不動(dòng)?
命令行窗口顯示:
[LUA-print] [string "src/app/Snake.lua"]:61: attempt to call field 'BodyArray' (
a table value)
stack traceback:
[string "src/app/scenes/MainScene.lua"]:13: in function <[string "src/ap
p/scenes/MainScene.lua"]:12>
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)
local tick = function()--第12行代碼
self.snake:Update()--第13行代碼
end
cc.Director:getInstance():getScheduler():scheduleScriptFunc(tick,cMoveSpeed,false)
end
function MainScene:onExit()
end
return MainScene
Snake.lua代碼如下
local Snake = class("Snake")
local Body = require("app.Body")
local cInitLen = 3
function Snake:ctor(node)
self.BodyArray = {}
self.node = node
self.MoveDir = "left"
for i = 1,cInitLen do
self:Grow(i == 1)
end
end
function Snake:GetTailGrid()
if #self.BodyArray == 0 then
return 0,0
end
local tail = self.BodyArray[#self.BodyArray]
return tail.X,tail.Y
end
function Snake:Grow(isHead)
local tailX,tailY = self:GetTailGrid()
local body = Body.new(self,tailX,tailY,self.node,isHead)
table.insert(self.BodyArray,body)
end
local function OffsetGridByDir(x,y,dir)
if dir == "left" then
return x -1,y
elseif dir == "right" then
return x +1,y
elseif dir == "up" then
return x,y -1
elseif dir == "down" then
return x,y +1
end
print("unknown dir",dir)
return x,y
end
function Snake:Update()
if #self.BodyArray == 0 then
return
end
for i = #self.BodyArray,1,-1 do
local body = self.BodyArray{i}--第61行代碼
if i == 1 then
body.X,body.Y = OffsetGridByDir(body.X,body.Y,self.MoveDir)
else
local front = self.BodyArray[i-1]
body.X,body.Y = front.X,front.Y
end
body:Update()
end
end
return Snake
2015-09-20
local body = self.BodyArray{i}--第61行代碼
-- carefully look...... ? [i]
2015-09-19
大神來給我解答一下吧,謝謝啦