【发布时间】:2015-01-01 13:15:04
【问题描述】:
第一次发帖,如果已在任何其他帖子中回答此问题,我深表歉意,但我无法找到解决我在此或任何其他网站上面临的问题的方法。我是一名新程序员,通过网络教程和我找到的任何其他资源自学。我正在尝试创建将产生字符并允许您调用它们的代码。我在为使用 for 函数创建的各个实例分配索引值时遇到了麻烦。我试图将实例建立为表格和组显示对象。如果有人能够向我指出任何资源的方向,以便更深入地了解 Lua 的 Corona SDK 实现的表和组显示对象,我确信我的问题是我没有足够透彻的理解这些特定的功能以及它们是如何工作的。这是我目前写的代码。
-- Character Game
require "sprite"
require "ui"
local background = display.newImage("Background Placeholder.png")
halfW = display.viewableContentWidth / 2
halfH = display.viewableContentHeight / 2
local numCharacters = 20
local roundedRect = display.newRoundedRect( 365, 20, 110, 40, 8 )
roundedRect:setFillColor( 0, 255, 0, 80 )
score = 0
t = ui.newLabel{ bounds = { 370, 30, 100, 40 },
text = "Score " .. score,
textColor = { 255, 0, 20, 255 },
size = 18,
align = "center"
}
local scoreboard = function ( event )
t:setText( "Score " .. score )
end
Runtime:addEventListener( "enterFrame", scoreboard )
local group = display.newGroup()
local character = sprite.newSpriteSheetFromData( "Character Placeholder.png", require("Character Placeholder").getSpriteSheetData() )
local characterSet1 = sprite.newSpriteSet(character,1,8)
sprite.add(characterSet1,"character",1,8,1500,0)
local characterplay = function( event )
score = score + group.points
group[i]:removeSelf()
end
do
for i=1, numCharacters do
group:insert(sprite.newSprite(characterSet1))
group[i].xScale = .2
group[i].yScale = .2
group.points = 50
group[i]:setReferencePoint ( display.BottomCenterReferencePoint )
group[i]:translate( halfW + math.random( -100, 100 ), halfH + math.random( -130, -110 ) )
end
timer.performWithDelay( 500, charactermovie )
for i=1, 21 do
timer.performWithDelay( math.random( 500, 5000 ) , charactermove )
charactermove = function(event )
transition.to( group[i], { time=10000, y = 580 } )
transition.to( group[i], { time=8000, x = math.random( 0, 480 ) } )
transition.to( group[i], { time=7000, xScale = 1.5} )
transition.to( group[i], { time=7000, yScale = 1.5} )
group[i]:prepare("character")
group[i]:play()
end
group[i]:addEventListener( "tap", characterplay )
end
end
charactermovie = function( event )
group[i]:prepare("character")
group[i]:play()
end
local function spriteListener( event )
print( "Sprite event: ", event.sprite, event.sprite.sequence, event.phase )
end
for i, group in pairs(group) do print (group, i, v) end
我目前正在“尝试索引字段'?'在启动时包含此代码“group[i]:addEventListener(“tap”,zombieplay)”的行和“group[i]:removeSelf()”行的“nil key provided for property lookup”错误僵尸播放”功能。我尝试将有问题的代码移动到多个位置,以查看这是否是范围界定问题,但我在很大程度上遇到了同样的错误,并相信我可能无法正确理解索引和键......我发现该应用程序按预期运行,但我必须调用索引键 1 到 21 才能让它们全部移动,即使我只调用 20 个字符并且 removeSelf 行抛出错误不会删除单个字符。我要试试为角色编写一个模块,看看这是否有助于解决这些问题。我会尽快发布我的结果。
【问题讨论】:
-
您应该缩进您的代码,以便我们可以轻松阅读它
-
谢谢,我会尽快清理它。
-
现在已正确格式化。如果有人在这里看到我做错了什么,将不胜感激!我试图在一个模块中设置它,但我遇到了基本上所有相同的问题,所以我将尝试坚持让它以这种方式工作。无论如何,这基本上是模块中的内容......提前感谢任何检查过这个的人!!!!