2013-04-22 67 views
1

我会尝试尽可能简洁与我的问题。科罗娜SDK数组索引超过数组边界的,建议需要

首先,文件是:

block.lua 
base.lua 
main.lua 

在block.lua我创建块,添加碰撞检测和清理代码。 在base.lua中,我创建了一个由4列和10行组成的基础。共40个街区。 在main.lua中,我创建了4个由base.class构成的基地。一旦比赛开始

所有工作正常。 我删除了基地,并再次打电话给他们上2级 他们创造自己确定的,但 当敌人被再次破坏,基地重建,我得到一个:

array index 1 is beyond array bounds:1..1 

- 所有一路攀升中场休息

array index 800 is beyond array bounds:1..159 

它就会建立基地和继续下去,直到敌人被破坏,做同样的再次开始:

array index 800 is beyond array bounds:1..159 

- 一路中场休息

array index 4000 is beyond array bounds:1..159 
blockGroup:insert(blockNum,self.block) 

现在我看不到什么毛病类中的终端点我在block.lua行,我已经看过,并用Google搜索几个小时,但都无济于事。 我真的很感谢在这里指导我的帮助之手。 我曾尝试重写“清理”等,但没有喜悦。 我留下了几注释掉位在那里,并去掉了一些无关紧要的东西。 我张贴相关的代码如下:

--MAIN.LUA-- 

function gameOver() 
    Runtime:removeEventListener("enterFrame", onEnterFrame) 
    Runtime:removeEventListener("enterFrame", movePlayer) 

    layers:removeSelf() 
    layers = nil 

    enemyCount = 0 

    for i = 1,#allEnemys do 
    timer.cancel(allEnemys[i].clock) 
    Runtime:removeEventListener("enterFrame", allEnemys[i]) 
    display.remove(allEnemys[i].image) 
    allEnemys[i].image=nil 
    end 
    allEnemys=nil 

cleanupBlocks() 
    end 
---------------------------------------------------------------------- 
       -- LEVEL UP -- 
---------------------------------------------------------------------- 
function levelUp(level) 
enemyCount = 0 

local enemys = require("modules.enemy") 
    if allEnemys ~= nil then 
     for i = 1,#allEnemys do 
      timer.cancel(allEnemys[i].clock) 
      Runtime:removeEventListener("enterFrame", allEnemys[i]) 
      display.remove(allEnemys[i].image) 
      allEnemys[i].image=nil 
     end 
    end 
      allEnemys=nil 
cleanupBlocks() 
levels() 

end 
---------------------------------------------------------------------- 
       -- LEVELS -- 
---------------------------------------------------------------------- 
function levels(level) 

function createInvader(x, y, row) 
    for j = 1, 2 do 
    for i = 1, 2 do 
     if allEnemys == nil then 
     allEnemys = {} 
     else 
     enemysCount=#allEnemys 
     end 
     allEnemys[#allEnemys + 1] = enemys:new() 
     allEnemys[#allEnemys ]:init(i * 60, j * 70 + 70,j) 
     allEnemys[#allEnemys ]:start() 
    end 
    end 
end 
createInvader() 

--[[function createBases1() 

local base = require("modules.base") 
    for i = 1, 4 do 
    base:new() 
    base:init(i * 180 - 130, 850) 
    end 
end ]]-- 

createBases() 
end 

--BLOCK.LUA--

local block = {} 
local block_mt = { __index = block} 
local scene = scene 
local blockGroup = display.newGroup() 
local blockNum = 0 


function block:new() -- constructor 
local group = {} 
return setmetatable(group, block_mt) 
end 

function block:init(xloc,yloc) --initializer 
-- Create attributes 

self.block = display.newRect(xloc,yloc,10,10) 
self.block:setFillColor (2, 255, 14 ) 

blockNum = blockNum + 1 
blockGroup:insert(blockNum,self.block) 

local blockCollisionFilter = { categoryBits = 128, maskBits = 387} 
physics.addBody(self.block, "static", {filter = blockCollisionFilter}) 
self.count = 1 

end 
function cleanupBlocks() 

--[[ print(blockNum, blockGroup.numChildren) 
for i=1,blockGroup.numChildren do 
blockGroup[1]:removeSelf() 
blockGroup[1] = nil 
end ]]-- 
print(blockNum, blockGroup.numChildren) 
while blockGroup.numChildren>0 do 

    display.remove(blockGroup[1]) 
    blockGroup[1]=nil 
end 

end 

function block:start() 
--- Create Listeneres 
self.block:addEventListener("collision", self) 
scene:addEventListener('base_block_event', self) 
end 

return block 

--BASE.LUA--

local base = {} 
local base_mt = { __index = base} 
local scene = scene 

local block = require("modules.block") 

function base:new() -- constructor 
local group = {} 
return setmetatable(group, base_mt) 
end 

function base:init(xloc, yloc) --initializer 
-- Create attributes 
local base 

for j = 1, 4 do 
    for i = 1, 10 do 
     base = block:new() 
     base:init(xloc+i * 10,yloc+j * 10) 
     base:start() 

    end 
end 

end 

return base 

回答

0

我看你用

blockNum = blockNum + 1 
blockGroup:insert(blockNum,self.block) 

尝试使用

blockGroup:insert(self.block) 

只是为了看看你是否仍然有这个错误。