ShakeSceneCommand.lua 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. local ShakeSceneCommand = class('ShakeSceneCommand', framework.SimpleCommand)
  2. local ShakeActionTag = 1234
  3. function ShakeSceneCommand:ctor()
  4. end
  5. function ShakeSceneCommand:execute(notification)
  6. local world_node = global.sceneGraphCtl:GetSceneNode( global.MMO.NODE_GAME_WORLD )
  7. local data = notification:getBody()
  8. data = data or {}
  9. self:checkOriginPos( world_node )
  10. world_node:runAction( self:createAction(data) )
  11. end
  12. function ShakeSceneCommand:checkOriginPos(node)
  13. if node:getActionByTag( ShakeActionTag ) then
  14. node:stopActionByTag(ShakeActionTag)
  15. if node.aShakeOriginPos then
  16. node:setPosition( node.aShakeOriginPos )
  17. end
  18. else
  19. node.aShakeOriginPos = cc.p( node:getPosition() )
  20. end
  21. end
  22. function ShakeSceneCommand:createAction(data)
  23. local time = data.time and data.time * 0.001 or 0.7
  24. local x = data.distance or 10
  25. local y = data.distance or 10
  26. local shake = cc.ActionShake:create( time, x, y )
  27. shake:setTag( ShakeActionTag )
  28. return shake
  29. end
  30. return ShakeSceneCommand