2013-06-06 2 views
0

Я довольно новичок в Corona SDK и LUA. Надеюсь, кто-то может мне помочь. Я давно застрял в своем массиве и оценил, основываясь на задействованном объекте, в функции, какой объект был передан функции.Corona SDK/LUA: как оценить, какой объект массива был использован.

Что я пытаюсь сделать? На основе массива я запускаю автомобиль (изображение), когда пользователь удаляет этот автомобиль, автомобиль удаляется с экрана, и оценка обновляется.

То, что я хотел бы достигнуть, чтобы установить другое значение оценки (100) для синего автомобиля (bluecar.png) и когда все другие автомобили прослушиваются балл 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.

Любая помощь очень ценится.

ответ

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 
+0

Удивительно, спасибо, что он работает отлично! Спасибо за вашу помощь –

0

Вы можете указать 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 
Смежные вопросы