0

私はコロナSDKとLUAにかなり慣れていません.誰かが私を助けてくれることを願っています. 私は今、かなり長い間、関数に渡されたオブジェクトが関数内で、タップされたオブジェクトに基づいて配列と評価に固執しています。

私は何を達成しようとしていますか?配列に基づいて車 (画像) を生成します。ユーザーがこの車をタップすると、車が画面から削除され、スコアが更新されます。

私が達成したいのは、青い車 (bluecar.png) に別のスコア値 (100) を設定し、他のすべての車がタップされたときにスコア 5 を設定することです。

function createCar()
  carArray = { "carblue.png", "cargreen.png", "carred.png", "caryellow.png"  }
  car = display.newImage( carArray [ math.random (#carArray ) ] )
  car.x = -200
  car.y = math.random (0, display.contentHeight)
  car.xScale = 0.2
  car.yScale = 0.2
  car:rotate (90)

  car.moves = transition.to (car, {time = 3000,  x=display.contentWidth-30 , y=math.random(0,display.contentHeight), onComplete = hitWall } )
  car:addEventListener ( "tap", touchCar )

  return car

end

function touchCar(event)
  local cartouched = event.target
  transition.cancel ( event.target.moves )
  audio.play(brake)
  cartouched:rotate (370)

  if  cartouched == carArray[1] then
    score = score + 100
      else score = score +5
  end
    scorelabel.text = "Score: ".. score 
    local function removeCar()
        display.remove(cartouched)
    end 
  timer.performWithDelay(600, removeCar)

createCar()
end

では、どの車が触れられたかを評価するにはどうすればよいでしょうか。たとえば、青い車がタップされた場合、コードはスコアに 100 を追加し、それ以外の場合は 5 を追加します。

どんな助けでも大歓迎です。

4

2 に答える 2

0
local BLUE_CAR = 1    --<------

function createCar()
  carArray = { "carblue.png", "cargreen.png", "carred.png", "caryellow.png"  }
  carType = math.random (#carArray )    --<------
  car = display.newImage( carArray [ carType ] )    --<------
  car.x = -200
  car.y = math.random (0, display.contentHeight)
  car.xScale = 0.2
  car.yScale = 0.2
  car:rotate (90)

  car.type = carType    --<------

  car.moves = transition.to (car, {time = 3000,  x=display.contentWidth-30 , y=math.random(0,display.contentHeight), onComplete = hitWall } )
  car:addEventListener ( "tap", touchCar )

  return car

end

function touchCar(event)
  local cartouched = event.target
  transition.cancel ( event.target.moves )
  audio.play(brake)
  cartouched:rotate (370)

  if  cartouched.type == BLUE_CAR then    --<------
    score = score + 100
      else score = score +5
  end
    scorelabel.text = "Score: ".. score 
    local function removeCar()
        display.remove(cartouched)
    end 
  timer.performWithDelay(600, removeCar)

createCar()
end
于 2013-06-06T21:54:22.280 に答える
0

すべての車に ID を与えて ID を評価し、青い車の ID が見つかった場合はスコアを更新できます。次のコードはあなたを助けるかもしれません:

   function createCar()
   carArray = { "carblue.png", "cargreen.png", "carred.png", "caryellow.png"  }
   car = display.newImage( carArray [ math.random (#carArray ) ] )
   car.x = -200
   car.y = math.random (0, display.contentHeight)
   car.xScale = 0.2
   car.yScale = 0.2
   car:rotate (90)
   car.moves = transition.to (car, {time = 3000,  x=display.contentWidth-30 , y=math.random(0,display.contentHeight), onComplete = hitWall } )
   if car == "carblue.png" then
    car.id = "blue"
   else
    car.id = "normal"
   end
   car:addEventListener ( "tap", touchCar )

   return car

   end

 function touchCar(event)
    local cartouched = event.target
    transition.cancel ( event.target.moves )
    audio.play(brake)
    cartouched:rotate (370)

   if  event.target.id == "blue" then
      score = score + 100
   else
      score = score +5
   end
    scorelabel.text = "Score: ".. score 
    local function removeCar()
    display.remove(cartouched)
  end 
 timer.performWithDelay(600, removeCar)
 createCar()
 end
于 2013-06-13T11:01:01.450 に答える