0

次のコードを実行しようとすると、次のエラーが表示されます。

フィールド 'other' (nil 値) のインデックスを作成しようとしています

しかし、理由はわかりません。

コード:

function onCollision(event)
 if event.phase == "began" then 
    if event.other.star == "star" then
       score = score + 1
    elseif event.other.mine1 == "mine1" then
       if jet.collided == false then
         timer.cancel(tmr)    
         jet.collided = true    
         jet.bodyType = "static"
         explode()
       end
     end
   end
 end

前もって感謝します :)

4

1 に答える 1

5

@lhfと@RBerteigが言ったように、問題event.otherは.nilstar

ifとevent.otherelseの両方の条件が設定されることに依存してnilいるため、問題を解決する慣用的な方法は、前の if に nil チェックを追加することです。if event.phase == "began" and event.other thenevent.other

function onCollision(event)
 if event.phase == "began" and event.other then 
    if event.other.star == "star" then
       score = score + 1
    elseif event.other.mine1 == "mine1" then
       if jet.collided == false then
         timer.cancel(tmr)    
         jet.collided = true    
         jet.bodyType = "static"
         explode()
       end
    end
  end
 end

「フィールドにインデックスを付けようとしている」というメッセージについて疑問に思っている場合は、lua インデックス メタメソッドの詳細をここで読むこともできます。

于 2013-10-24T00:08:10.437 に答える