Advertisement
lvs

Step Detector

lvs
Aug 19th, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.65 KB | None | 0 0
  1. local scene = storyboard.newScene()
  2.  
  3. local mAbs = math.abs
  4. local mSqrt = math.sqrt
  5. local mFloor = math.floor
  6. local tRemove = table.remove
  7.  
  8. function scene:createScene (event)
  9.     local group = self.view
  10.     self.steps = 0
  11.     self.lastx = 0
  12.     self.lasty = 0
  13.     self.lastz = 0
  14.     self.lastdiff = 0
  15.     self.lastdot = 0
  16.     self.delta = 0.3
  17. end
  18.  
  19. function scene:accelerometer (event)
  20.     local lastx, lasty, lastz, x, y, z = self.lastx, self.lasty, self.lastz, event.xInstant, event.yInstant, event.zInstant
  21.     local dot = mAbs(lastx * x + lasty * y + lastz * z)
  22.     local diff = self.lastdot - dot
  23.  
  24.     -- Условие опрделения тряски, self.delta - пороговое значение
  25.     -- self.delta determines sensivity
  26.     if mAbs(diff) > self.delta then
  27.         if not self.lastStep then
  28.             event.isStep = true
  29.             self.lastStep = true
  30.         end
  31.     else
  32.         self.lastStep = false
  33.     end
  34.  
  35.     self.lastdot = dot
  36.     self.lastdiff = diff
  37.     self.lastx = x
  38.     self.lasty = y
  39.     self.lastz = z
  40.  
  41.     if event.isStep == true then
  42.         -- Здесь идёт код, который должен выполнится на тряску
  43.         -- Shake event code is here
  44.         print('Shake it!')
  45.     end
  46. end
  47.  
  48. function scene:enterScene (event)
  49.     system.setAccelerometerInterval(10)
  50.     Runtime:addEventListener('accelerometer', self)
  51. end
  52.  
  53. function scene:exitScene (event)
  54.     Runtime:removeEventListener('accelerometer', self)
  55. end
  56.  
  57. scene:addEventListener('createScene', scene)
  58. scene:addEventListener('enterScene', scene)
  59. scene:addEventListener('exitScene', scene)
  60. return scene
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement