Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/10/2009, 12:44
Avatar de Adler
Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 2 meses
Puntos: 126
Respuesta: Arrays en JavaScript

Hola

Nada, no te molestes zerokilled. Me pareció algo prefabricado y buscando un poco encontré esto que soluciona el problema

Código javascript:
Ver original
  1. <script LANGUAGE="JavaScript">
  2. <!--
  3. // image src
  4. var trailsrc = "bullet.gif";
  5.  
  6. var nDots = 7;
  7. var Xbpos = 0;
  8. var Ybpos = 0;
  9.  
  10. // fixed time step, no relation to real time
  11. var DELTAT = .01;
  12. // size of one spring in pixels
  13. var SEGLEN = 10;
  14. // spring constant, stiffness of springs
  15. var SPRINGK = 10;
  16. // all the physics is bogus, just picked stuff to make it look okay
  17. var MASS = 1;
  18. // Positive XGRAVITY pulls right, negative pulls left
  19. // Positive YGRAVITY pulls down, negative up
  20. var XGRAVITY = 0;
  21. var YGRAVITY = 50;
  22. // RESISTANCE determines a slowing force proportional to velocity
  23. var RESISTANCE = 10;
  24. // stopping criterea to prevent endless jittering
  25. // doesn't work when sitting on bottom since floor
  26. // doesn't push back so acceleration always as big
  27. // as gravity
  28. var STOPVEL = 0.1;
  29. var STOPACC = 0.1;
  30. var DOTSIZE = 0;
  31. // BOUNCE is percent of velocity retained when
  32. // bouncing off a wall
  33. var BOUNCE = 0.75;
  34.  
  35. var ff=(document.getElementById&&!document.all);
  36. var ns=(document.layers);
  37. var ie=(document.all);
  38.  
  39. // always on for now, could be played with to
  40. // let dots fall to botton, get thrown, etc.
  41. var followmouse = true;
  42. var dots = new Array();
  43.  
  44. function init()
  45. {
  46. var i = 0;
  47. for (i = 0; i < nDots; i++) {
  48. dots[i] = new dot(i);
  49. }
  50.  
  51. // set their positions
  52. for (i = 0; i < nDots; i++) {
  53. dots[i].obj.left = dots[i].X;
  54. dots[i].obj.top = dots[i].Y;
  55. }
  56.  
  57. setTimeout("startanimate()", 10);
  58. }
  59.  
  60. function dot(i)
  61. {
  62. this.X = Xbpos;
  63. this.Y = Ybpos;
  64. this.dx = 0;
  65. this.dy = 0;
  66.  
  67. if (ns){
  68. document.write("<layer id=\"mtrail"+ i +"\" ><img src='"+trailsrc+"' border=\"0\"><\/layer>");
  69. } else if (ie||ff) {
  70. if (i == 0) {
  71. document.write("<div id=\"mtrail"+ i +"\" style=\"POSITION: absolute; VISIBILITY: hidden;\"><img src='"+trailsrc+"' border=\"0\"><\/div>");
  72. } else {
  73. document.write("<div id=\"mtrail"+ i +"\" style=\"POSITION: absolute; \"><img src='"+trailsrc+"' border=\"0\"><\/div>");
  74. }
  75. }
  76.  
  77. if (ie)
  78. {
  79. this.obj = eval("mtrail" + i + ".style");
  80. } else if (ff)
  81. {
  82. this.obj = document.getElementById("mtrail" + i).style;
  83. }
  84. else
  85. {
  86. this.obj = eval("document.mtrail" + i);
  87. }
  88. }
  89.  
  90. function startanimate() {
  91. setInterval("animate()", 20);
  92. }
  93.  
  94. // just save mouse position for animate() to use
  95. function MoveHandler(e)
  96. {
  97. if (ie) {
  98. Xbpos = window.event.x + document.body.scrollLeft;
  99. Ybpos = window.event.y + document.body.scrollTop;
  100. }
  101. else {
  102. Xbpos = e.pageX;
  103. Ybpos = e.pageY;
  104. }
  105. }
  106.  
  107. function vec(X, Y)
  108. {
  109. this.X = X;
  110. this.Y = Y;
  111. }
  112.  
  113. // adds force in X and Y to spring for dot[i] on dot[j]
  114. function springForce(i, j, spring)
  115. {
  116. var dx = (dots[i].X - dots[j].X);
  117. var dy = (dots[i].Y - dots[j].Y);
  118. var len = Math.sqrt(dx*dx + dy*dy);
  119. if (len > SEGLEN) {
  120. var springF = SPRINGK * (len - SEGLEN);
  121. spring.X += (dx / len) * springF;
  122. spring.Y += (dy / len) * springF;
  123. }
  124. }
  125.  
  126.  
  127. function animate() {
  128. // dots[0] follows the mouse,
  129. // though no dot is drawn there
  130. var start = 0;
  131. if (followmouse) {
  132. dots[0].X = Xbpos;
  133. dots[0].Y = Ybpos;
  134. start = 1;
  135. }
  136.  
  137. for (i = start ; i < nDots; i++ ) {
  138.  
  139. var spring = new vec(0, 0);
  140. if (i > 0) {
  141. springForce(i-1, i, spring);
  142. }
  143. if (i < (nDots - 1)) {
  144. springForce(i+1, i, spring);
  145. }
  146.  
  147. // air resisitance/friction
  148. var resist = new vec(-dots[i].dx * RESISTANCE,
  149. -dots[i].dy * RESISTANCE);
  150.  
  151. // compute new accel, including gravity
  152. var accel = new vec((spring.X + resist.X)/MASS + XGRAVITY,
  153. (spring.Y + resist.Y)/ MASS + YGRAVITY);
  154.  
  155. // compute new velocity
  156. dots[i].dx += (DELTAT * accel.X);
  157. dots[i].dy += (DELTAT * accel.Y);
  158.  
  159. // stop dead so it doesn't jitter when nearly still
  160. if (Math.abs(dots[i].dx) < STOPVEL &&
  161. Math.abs(dots[i].dy) < STOPVEL &&
  162. Math.abs(accel.X) < STOPACC &&
  163. Math.abs(accel.Y) < STOPACC) {
  164. dots[i].dx = 0;
  165. dots[i].dy = 0;
  166. }
  167.  
  168. // move to new position
  169. dots[i].X += dots[i].dx;
  170. dots[i].Y += dots[i].dy;
  171.  
  172. // get size of window
  173. var height, width;
  174. if (!ie) {
  175. height = window.innerHeight + window.pageYOffset;
  176. width = window.innerWidth + window.pageXOffset;
  177. } else {
  178. height = document.body.clientHeight + document.body.scrollTop;
  179. width = document.body.clientWidth + document.body.scrollLeft;
  180. }
  181.  
  182. // bounce off 3 walls (leave ceiling open)
  183. if (dots[i].Y >= height - DOTSIZE - 1) {
  184. if (dots[i].dy > 0) {
  185. dots[i].dy = BOUNCE * -dots[i].dy;
  186. }
  187. dots[i].Y = height - DOTSIZE - 1;
  188. }
  189. if (dots[i].X >= width - DOTSIZE) {
  190. if (dots[i].dx > 0) {
  191. dots[i].dx = BOUNCE * -dots[i].dx;
  192. }
  193. dots[i].X = width - DOTSIZE - 1;
  194. }
  195. if (dots[i].X < 0) {
  196. if (dots[i].dx < 0) {
  197. dots[i].dx = BOUNCE * -dots[i].dx;
  198. }
  199. dots[i].X = 0;
  200. }
  201.  
  202. // move img to new position
  203. dots[i].obj.left = dots[i].X;
  204. dots[i].obj.top = dots[i].Y;
  205. }
  206. }
  207.  
  208. init();
  209. if(ns)window.captureEvents(Event.MOUSEMOVE);
  210. document.onmousemove = MoveHandler;
  211. -->
  212. </script>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />