KeyboardInput.lua 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. class "ImageRotator" (EventHandler)
  2. function ImageRotator:ImageRotator(image)
  3. self.image = image
  4. self.rotationSpeed = 0
  5. self:EventHandler()
  6. end
  7. function ImageRotator:rotate(e)
  8. self.image:setRotation(self.image:getRotation() + e * self.rotationSpeed)
  9. end
  10. function ImageRotator:handleEvent(e)
  11. if e:getDispatcher() == Services.Core:getInput() then
  12. local inputEvent = InputEvent(e)
  13. local key = inputEvent:keyCode()
  14. if e:getEventCode() == EVENT_KEYDOWN then
  15. if key == KEY_LEFT then
  16. self.rotationSpeed = -200
  17. elseif key == KEY_RIGHT then
  18. self.rotationSpeed = 200
  19. end
  20. elseif e:getEventCode() == EVENT_KEYUP then
  21. if key == KEY_LEFT or key == KEY_RIGHT then
  22. self.rotationSpeed = 0
  23. end
  24. end
  25. end
  26. end
  27. screen = Screen()
  28. image = ScreenImage("polycode_logo.png")
  29. image:setPositionMode(POSITION_CENTER)
  30. image:setPosition(640/2,480/2)
  31. screen:addChild(image)
  32. imageRotator = ImageRotator(image)
  33. Services.Core:getInput():addEventListener(imageRotator, EVENT_KEYDOWN)
  34. Services.Core:getInput():addEventListener(imageRotator, EVENT_KEYUP)
  35. function Update(elapsed)
  36. imageRotator:rotate(elapsed)
  37. end