如何确定哪个数组对象被点击 - Corona SDK / LUA。

我对Corona 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分。

非常感谢任何帮助。

点赞
用户1502079
用户1502079
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-06 21:54:22
用户1514524
用户1514524

你可以给每辆车分配一个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-13 11:01:01