Первый пост, и я искренне извиняюсь, если на этот вопрос был дан ответ в каком-либо другом посте, но я не смог найти решение проблемы, с которой я столкнулся на этом или любом другом сайте. Я - новый программист, самостоятельно обучающий с веб-учебниками и любым другим ресурсом, который я нашел. Я пытаюсь создать код, который будет порождать символы и позволять вам вызывать их. У меня были проблемы с назначением значения индекса для отдельных экземпляров, которые я создал с помощью функции 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 ()" строка " zombieplay ". Я попытался переместить нарушающий код в различные места, чтобы увидеть, является ли это проблемой с ограничением объема, но я в основном сталкиваюсь с той же ошибкой и считаю, что не могу правильно понять индексы и ключи ... Я нашел что приложение функционирует так, как задумано, но мне нужно вызывать индексные клавиши с 1 по 21, чтобы заставить их всех двигаться, хотя я и вызываю только 20 символов, а ошибки выброса строки removeSelf не удаляют отдельные символы. Я собираюсь попробовать написать модуль для персонажей и посмотреть, поможет ли это прояснить ситуацию. Я скоро опубликую свои результаты.