2012-01-18 61 views
2

首次發帖和我真誠地道歉,如果這已在任何其他帖子中得到解答,但我無法找到解決方案我在這個或任何其他問題上面臨的問題現場。我是一個新的程序員自我教學與網絡教程和我找到的任何其他資源。我正在嘗試創建可以產生字符並允許您調用它們的代碼。我無法爲我用for函數創建的各個實例分配一個索引值。我試圖將實例建立爲表和組顯示對象。如果任何人能夠指向我的任何資源的方向,以更深入地理解用於Lua的Corona SDK實現的表和組顯示對象,我相信我的問題是我沒有足夠的理解這些特定功能以及它們如何工作。這是我迄今爲止編寫的代碼。組顯示對象與Corona中的表格Lua

-- 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行拋出的錯誤也不會刪除單個字符。爲這些角色編寫一個模塊,看看是否有助於解決這些問題,我很快就會發布我的結果

+0

你應該縮進你的代碼,這樣我們可以很容易地閱讀 – cctan 2012-01-19 01:16:07

+0

謝謝我會盡快清理它。 – 2012-01-21 00:47:02

+0

現在這已被正確格式化。如果有人看到我在這裏做錯了,將不勝感激!我試圖在一個模塊中設置它,並且我遇到了基本上所有相同的問題,所以我會試着堅持使它以這種方式工作。這基本上是什麼會進入該模塊無論如何...先感謝任何誰檢查了這一點! – 2012-02-15 14:05:52

回答

0

你的characterplay和charactermovie函數試圖使用變量i,這是在t之外他的職能範圍。

有一個稱爲target的事件屬性,用於獲取事件被調用者。你想要做這樣的事情:

local characterplay = function(event) 
    score = score + group.points 
    event.target:removeSelf() 
end