0

私が作成しようとしているゲームには、プレイヤーが触れることができるオブジェクトがあります。これらのオブジェクトに触れると、ステージがクリアされます。複数のオブジェクトがあるため、すべてを配列内に配置し、配列からタッチされたオブジェクトを削除して、配列が空になったときにのみstageclearを呼び出すようにする必要があります。これは私が現在使用しようとしているコードです:

if event.phase == "ended" then
    for i=#objArray,0,-1 do
        if(#objArray ~= 0) then
            objArray[i] = table.remove(objArray)
        else
            storyboard.gotoScene("ClearStage", fade, 400)
            timer.pause(timerCount)
        end
    end
end

これに伴う問題は、配列がループを1回通過すると、すぐに0になることです。また、私はobjArray内の値であるべきではないと思います。代わりにタッチされたオブジェクトである必要がありますが、それを実装する方法がわかりません。私は次のようなことをする必要があります:

if objArray > 0 then
      --remove touched object from array
else
      --go to clear
end

私は配列とループの作業を始めたばかりなので、まだ非常に混乱しているので、誰かがこれを手伝ってくれることを願っています。配列が0より大きいときに、タッチしたオブジェクトだけを削除するように配列に指示するにはどうすればよいですか?

実際、気にしないでください。私は自分のコードを微調整しながら解決策を見つけました。これが私が最終的に得たコードです:

if(#objArray ~= 0) then
        objArray[0] = table.remove(objArray)
        if(#objArray == 0) then
            storyboard.gotoScene("ClearStage", fade, 400)
            timer.pause(timerCount)
        end
    end

基本的に、私はforループをもう必要とせず、次のように0インデックスを使用しました(私の理解が正しければ):objArray[0]を使用してオブジェクトを配列から削除します。

4

1 に答える 1

1

おそらくあなたが正しく触れたオブジェクトを削除すると思います。これを試してください

display.remove(event.target);event.target=nil

削除した後、アレイサイズを確認してください

if #objArray == 0 then
    --here you do your array clear work
    table.remove (objArray )
 end
于 2013-03-26T06:47:17.577 に答える