2012-02-02 15 views
1

私は一種の一般的な質問をしていますが、あまりにも具体的にしようとすると、私は非常に混乱させてしまうと思います。ですから、基本的に私が知りたいことは次のとおりです。コロナSDKでテーブルを操作する方法

コロナ/ルアでテーブルを作成すると、無制限の数のテーブルを作成できます。だから私はテーブルが

rectangles = {}; 

と呼ばれ、その後、私はそれで矩形のインスタンスの束を置く。作成

を言います一度にすべての長方形のプロパティを変更したい場合は、どうすればできますか?

は、私はそれはのように、テーブル内の項目のセット数でどのように動作するかを理解して:あなたは、単に言うインスタンスのイメージのx位置のすべてを変更するには、その後

for i = 1, 10 do 
     rectangles[i] = display.newImage("rectangle.png"); 

 rectangles[i].x = 20; 

しかし、テーブルが常に成長しているので、あなたは上限が与えられていないので、配列のすべての項目のプロパティをどれだけ変更するのかを知らずに、どのようにプロパティを変更しますか?

+0

-1:研究の不足のため。 Luaのリストのすべての要素をどのように反復するかは、どこでも見つけることができる基本的なものです。それがコロナオブジェクトのリストであるかどうかは関係ありません。リストはリストです。 –

+0

あなたの質問を微調整することを検討するかもしれませんが、それはあなたをdownvoteするために他の人を誤解させるかもしれません – cctan

答えて

4

要素の種類が1種類しかない配列の場合は、要素数に#rectanglesを使用できます。 youtube例について

for i = 1, #rectangles do 
     rectangles[i] = display.newImage("rectangle.png"); 
end 

あなたは、このようにrectanglesに要素を追加した場合:何、それが実際にはある

rectangles[b]=b;

rectangles["083DF6B0"]=b"

表示オブジェクトbをキーとして使用すると、16進文字列に変換されます。加えて

、あなたは彼らがむしろインデックスよりも
キー(例えばArray.lengthと、array.width、array.weight ...)しているとして、各要素の上に行くためにpairsを使用する必要があります(たとえば、配列[2]、配列[3] ..)

for key,value in pairs(rectangles) do 
    print(key); --prints 083DF6B0 
    print(value); --prints 20 
    rectangles[key]=30; 
end 
+0

私は#rectangleがテーブルの全長を意味することを知っていますが、問題は私がここでこのチュートリアルを見ていたということです: http: //www.youtube.com/watch?v=abfaLoUw0ss と約33:50で彼は私が理解していない風船[b] = bを行い、この方法では使用できないと言います。しかし、私がバルーン[b]を使ってテーブル内のすべての要素を呼び出そうとすると、たとえばすべての要素のx値を変更します。 (バルーン[b] .x = 10)。それは動作しません –

+0

@スティーブ・パターソン - YouTubeの例は、キーとインデックスで保存しています。同じことをしているのであれば、[pairs](http://www.lua.org/manual/5.1/manual.html#pdf-pairs)を使ってテーブルの各項目を繰り返し処理したいと思うでしょう。 –

+0

@Corbin March - 情報をいただきありがとうございますが、私はプログラミングに慣れていないので、Luaリファレンスはちょっと混乱していますが、認める必要があります。だから、もし私がこのテーブルのすべての項目にtransition.to()をしようとしていたら、最初の引数として何を置くのですか? transition.to(私はここに何を入れますか?、{time、x、y}); –

2

どのようにテーブルに項目を格納しているかによって異なります。あなたは(あなたの例のように)インデックスで保存している場合は、インデックスと値を反復するipairsを使用することができます。

for index,value in ipairs(rectangles) do 
    value.x = 20 
    --or 
    rectangles[index].x = 20 
end 

キー(で保存している場合は、コメントで言及ユーチューブの動画のように)、pairsを使用して反復する:あなたが期待するものを知っている場合を除き

for key,value in pairs(rectangles) do 
    value.x = 20 
    --or 
    rectangles[key].x = 20 
end 

ただ、インデックスとキーの両方を使用してアイテムを格納しないでください。

関連する問題