【问题标题】:Corona SDK/ LUA : How to evaluate which array object was tapped.Corona SDK/LUA:如何评估哪个数组对象被点击。
【发布时间】:2013-06-13 19:01:01
【问题描述】:

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

非常感谢任何帮助。

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:
    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
    

    【讨论】:

      【解决方案2】:

      您可以为每辆车分配 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
      

      【讨论】:

        猜你喜欢
        • 2014-07-29
        • 1970-01-01
        • 2012-09-16
        • 1970-01-01
        • 2020-07-23
        • 2012-08-30
        • 2013-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多