Advertisement
Guest User

Untitled

a guest
Apr 20th, 2014
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. this.lastFreeLifeTS = ( new Date() ).time;
  2.  
  3. var currTime:Number = ( new Date() ).time;
  4. var diff:Number = ( currTime - this.lastFreeLifeTime );
  5. var lifeTime:Number = 1000 * 60 * 20; // give a life every 20 minutes
  6. if( diff > lifeTime )
  7. {
  8. giveFreeLife();
  9. this.lastFreeLifeTime += lifeTime;
  10. }
  11.  
  12. // starting off
  13. var lifeTime:Number = 1000 * 60 * 20; // 20 minutes
  14. var msUntilNextLife:Number = ( ( new Date() ).time - this.lastFreeLifeTime ) + lifeTime;
  15. this.nextFreeLifeTime = getTimer() + msUntilNextLife;
  16.  
  17. ...
  18.  
  19. // check if we need to give a new life
  20. if( getTimer() > this.nextFreeLifeTime )
  21. {
  22. giveFreeLife();
  23. this.lastFreeLifeTime += lifeTime;
  24. this.nextFreeLifeTime += lifeTime;
  25. }
  26.  
  27. // load our SharedObject/XML and set our lastFreeLifeTime
  28. ...
  29.  
  30. // check how much time has passed and give any lives necessary
  31. var currTime:Number = ( new Date() ).time;
  32. var diff:Number = currTime - this.lastFreeLifeTime;
  33. var lifeTime:Number = 1000 * 60 * 20; // 20 minutes
  34. var numLives:int = int( diff / lifeTime );
  35. if( numLives > 5 )
  36. numLives = 5; // only give a maximum number of lives
  37. if( numLives > 0 )
  38. {
  39. giveFreeLives( numLives );
  40.  
  41. // update our lastFreeLifeTime only if we didn't give the max number of lives
  42. // (as otherwise we don't need it)
  43. // NOTE: because we're adding (lifeTime * numLives), it handles the time between
  44. // lives nicely. E.g. If we get a life every 20m and we come back after 30m, then
  45. // our lastFreeLifeTime will be (20 * i), meaning a 10m difference between the
  46. // current time, meaning we only have to wait 10m to get our next one
  47. if( numLives < 5 )
  48. this.lastFreeLifeTime += lifeTime * numLives;
  49. }
  50.  
  51. <?php
  52. echo round( microtime( true ) * 1000 );
  53. ?>
  54.  
  55. // NOTE: add all the other listeners, like IOErrorEvent, and SecurityErrorEvent
  56. var urlLoader:URLLoader = new URLLoader( new URLRequest( "http://myserver.com/timestamp.php" ) );
  57. urlLoader.addEventListener( Event.COMPLETE, onGetTime );
  58.  
  59. function onGetTime( e:Event ):void
  60. {
  61. // remove our event listener so we can clean up
  62. var urlLoader:URLLoader = ( e.target as URLLoader );
  63. urlLoader.removeEventListener( Event.COMPLETE, onGetTime );
  64.  
  65. // the data is the timestamp returned by php, as a string, so convert it
  66. var timestamp:Number = Number( urlLoader.data );
  67. if ( isNaN( timestamp ) )
  68. {
  69. trace( "Couldn't get the timestamp from the server! Returned details: " + urlLoader.data );
  70. timestamp = ( new Date() ).time; // fallback to client
  71. }
  72.  
  73. // do something with the time
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement