2013-04-22 2 views
1

Я пытаюсь сделать игру в Corona, где, если я коснусь экрана и повернуте экран, оно вращается, но только поворачивается, когда я продолжаю нажимать на экран, как мне изменить это, так что пока мой палец нажимается на экран, колесо вращается? Вот мой код:Corona SDK Touch Phases - Touch and Hold

local physics = require "physics" 
physics.start() 

--Variables 

--[bike = display.newImage("bike.png") 
--bike.x = 70 
--bike.y = 290 
--physics.addBody(bike, {friction = 0.3, bounce = 0.2}) 

wheel1 = display.newImage("wheel.png") 
wheel1.x = 480/2 
wheel1.y = 320/2 

wheel2 = display.newImage("wheel.png") 
wheel2.x = 480/2 + 50 
wheel2.y = 320/2 - 50 

driveBtn = display.newImage("drive.png") 


local function driveFunction(event) 


    wheel1.rotation = wheel1.rotation + 3 
    wheel2.rotation = wheel2.rotation + 3 


end 


Runtime:addEventListener("touch", driveFunction) 
+0

[ot] привет и добро пожаловать в SO. Мне жаль, что я не смогу кодировать корону SDK в возрасте 14 лет, да, я думаю, это очень хорошо! – Saturnix

ответ

0

Это очень простое решение. Кстати, очень хорошо, что вы начали развиваться в раннем возрасте, продолжайте кодирование ^^ Если вы не понимаете нижеприведенный код или логику, просто опубликуйте комментарий и спросите.

local physics = require "physics" 
physics.start() 

--Variables 

--[bike = display.newImage("bike.png") 
--bike.x = 70 
--bike.y = 290 
--physics.addBody(bike, {friction = 0.3, bounce = 0.2}) 

local wheel1 = display.newImage("wheel.png") 
wheel1.x = 480/2 
wheel1.y = 320/2 

local wheel2 = display.newImage("wheel.png") 
wheel2.x = 480/2 + 50 
wheel2.y = 320/2 - 50 

local driveBtn = display.newImage("drive.png") 

local function rotateWheel() 
     wheel1.rotation = (wheel1.rotation + 3) % 360 
     wheel2.rotation = (wheel2.rotation + 3) % 360 
end 

local function driveFunction(event) 
    if event.phase == "began" then 
      display.getCurrentStage():setFocus(wheel1) 
      wheel1.isFocus = true 
      Runtime:addEventListener("enterFrame", rotateWheel) 
    elseif wheel1.isFocus then    
      if event.phase == "moved" then 
      elseif event.phase == "ended" then 
       Runtime:removeEventListener("enterFrame", rotateWheel) 
       display.getCurrentStage():setFocus(nil) 
       wheel1.isFocus = false 
      end 
    end 
end 

Runtime:addEventListener("touch", driveFunction) 
+0

Благодарим за ответ! но симулятор загружает файл main.lua отлично, но когда я нажимаю на экран, возникает ошибка: Линия: 30 Попытка проиндексировать поле «цель» (значение nil), я не понимаю, я попытался исправить это много раз, но не повезло:/ –

+0

Я отредактировал код –

Смежные вопросы