2012-01-18 8 views
2

初めての投稿ですが、これは他の投稿で回答されているが、私はこの問題や他の問題に直面している解決策を見つけることができなかったことを謝りますサイト。私は新しいチュートリアルや私が見つけた他のリソースを使って自習している新しいプログラマーです。私は文字を生成し、あなたがそれらを呼び出すことができるようにするコードを作成しようとしています。 for関数を使って作成した個々のインスタンスにインデックス値を割り当てるのは難しいです。私はテーブルとグループ表示オブジェクトの両方としてインスタンスを確立しようとしました。もし誰かが私にルアのコロナ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]:removeSelf()"行の "group [i]:addEventListener(" tap "、zombieplay)"を含む行に " zombieplay "関数を使用しています。問題のコードであるかどうかを確認するために、問題のコードをさまざまな場所に移動しようとしましたが、私は主に同じエラーが発生し、インデックスやキーを正しく理解できないアプリは意図した通りに機能するが、私は20文字しか呼び出していないのに、removeSelfのエラーを投げるエラーが個々の文字を取り除いていないのに、それらをすべて動かすためにインデックスキーを1から21まで呼び出さなければならない。

+0

、我々は簡単に私はすぐにそれをクリーンアップに取り組む – cctan

+0

おかげでそれを読むことができるようにあなたのコードをインデントする必要がありますあなたはこのような何かをしたいです。 –

+0

これは正しくフォーマットされました。誰かが私がここで間違っていることを見れば、それは非常に感謝されます!私はこれをモジュールで設定しようとしましたが、基本的にはすべて同じ問題にぶつかりましたので、このように動作させるようにしていきます。これは基本的にとにかくモジュールに入るものです...これをチェックする人に事前に感謝!!!! –

答えて

0

あなたのキャラクターと関数の関数が変数iを使用しようとしていますが、これはtの外側にあります。彼は範囲を機能する。

イベントと呼ばれるイベントのプロパティがあり、これはイベントの呼び出し先を取得するために使用されます。

local characterplay = function(event) 
    score = score + group.points 
    event.target:removeSelf() 
end 
関連する問題