Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 29th, 2012  |  syntax: None  |  size: 1.64 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Cloned objects and reference inside functions
  2. var element = {};
  3. element.attrA = 'A';
  4. element.attrB = 1;
  5. element.autoAdvance = function(){
  6.    var that = this;
  7.    setInterval(function(){
  8.      that.attrB++;
  9.    },100);
  10. }
  11. element.instance = function(){
  12.    var clone = $.extend(true, {}, this);
  13.    return clone;
  14. }
  15.        
  16. var e1 = element.instance();
  17. var e2 = element.instance();
  18. e1.attrA = 'not e2s business';
  19. e2.attrA = 'not e1s attrA';
  20.        
  21. e1.autoAdvance();
  22.        
  23. var player = {};
  24. player.sprites = {};
  25. player.sprites.back = ['img/playerback_01.png','img/playerback_02.png','img/playerback_03.png'];
  26. player.sprites.head = ['img/playerhead_01.png','img/playerhead_02.png','img/playerhead_03.png'];
  27. player.back = new Image();
  28. player.back.src = player.sprites.back[0];
  29. player.head = new Image();
  30. player.head.src = player.sprites.head[0];
  31. player.loop = function(){
  32.     var that = this;
  33.     var loop = setInterval(function(){
  34.             //remove the [0] state from the sprite array and add it at [2]
  35.         var state = that.sprites.head.shift();
  36.         that.sprites.head.push(state);
  37.         state = that.sprites.back.shift();
  38.         that.sprites.back.push(state);
  39.         that.back.src = that.sprites.back[0];
  40.         that.head.src = that.sprites.head[0];
  41.         }, 100);
  42. }
  43. player.x = 0;
  44. player.y = 0;
  45. player.instance = function(){
  46.    var clone = $.extend(true, {}, this);
  47.    return clone;
  48. }
  49.        
  50. var player1 = player.instance();
  51. var player2 = player.instance();
  52.        
  53. player1.loop();
  54.        
  55. function Player(){
  56. this.sprites={};
  57. ......
  58. }
  59. Player.prototype.loop=function(){
  60. ....
  61. }
  62. var player1=new Player();
  63. var player2=new Player();
  64. player1.loop();
  65. player2.loop();// this should work better