0

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

很感谢任何形式的帮助。

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 回答