Autor Tema: mover elementos en una web con JavaScript setInterval moveTo desplazar CU01174E  (Leído 4476 veces)

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Respuestas al ejercicio CU01174E del curso básico de programación web JavaScript desde cero.

Citar
El siguiente código nos sirve al mismo tiempo de ejemplo y de ejercicio. Ejecuta el código y comprueba sus resultados. Luego responde las preguntas y cuestiones que se plantean más abajo.


Código: [Seleccionar]
<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
var start = 0;
var positionY = window.innerHeight/2-125;
var nuevaVentana;
var controlSinusoidal=0;
 window.onload = function () {

                var ejemplo = document.getElementById('ejemplo');

                ejemplo.addEventListener("click", ejecutarEjemplo);

}

 

function ejecutarEjemplo () {

                nuevaVentana = window.open ('', 'miNombre', 'width=250, height=250, resizable=true, menubar=yes');

                nuevaVentana.document.write('<h1>Aprenda a programar ahora. Aproveche la oportunidad</h1>');

                nuevaVentana.focus();
                nuevaVentana.moveTo(0,positionY);
                nuevaVentana.setInterval( sine, 1000/30 );
}

 

function sine(){

  controlSinusoidal = controlSinusoidal + Math.PI/256;
  positionY = 100*Math.sin(controlSinusoidal);
  start += 2;
  nuevaVentana.moveTo(start, window.innerHeight/2-100+positionY);

}

 

</script>

</head>

<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>

<div style="color:blue; margin:20px;" id ="ejemplo">Pulsa aquí</div>
</body>
</html>


Citar
a) ¿Qué representa la variable start? ¿Qué significado tiene que su valor inicial sea cero?

La variable start que está definida como variable global, representa la posición X de la ventana que se ha creado. Su valor inicial es cero porque empieza desde la parte más a la izquierda de la pantalla y va evolucionando por la coordenad X según va incrementando su valor.


Citar
b) ¿Qué representa la variable positionY? ¿Qué significado tiene que su valor inicial sea window.innerHeight/2-125 ?

La variable posicionY representa la posición respecto la coordenada Y donde encontraremos nuestra ventana respecto a la pantalla. El valor inicial representa que la colocamos en la posción central de la pantalla respecto al eje y.
El cálculo es -->la altura de la pantalla dividido entre 2 (para buscar el centro de la pantalla) - 125 (que es la mitad de la altura de la ventana que hemos creado para buscar el centro de la nueva ventana).


Citar
c) ¿Con qué frecuencia (cada cuánto tiempo) se produce el refresco o redibujado de la pantalla?

La frecuencia de refresco lo invocamos con : ' nuevaVentana.setInterval( sine, 1000/30 )', por lo que especificamos la frecuencia cada 1000/30 ns.


Citar
d) ¿Cuántos píxeles se desplaza hacia la derecha la ventana en cada refresco de pantalla que realiza el navegador?

El desplazamiento sobre el eje x lo hacemos atraves de la expresion --> 'start += 2;' , a cada llamada de la función se inclementa su valor en 2.


Citar
e) La base matemática del movimiento que describe la ventana es el movimiento ondulatorio. ¿Por qué la ventana sube y baja?

El movimiento vertical está realizado através de la funcion seno, esta función trigonométrica segun va variando su valor x, va variando su valor y de forma ascendente y descendente repetitivamente su periodo.


Citar
f) Modifica el código para que cuando la ventana llegue al lateral derecho de la pantalla se detenga su movimiento y aparezca un mensaje (alert) con el texto ¡Se terminó!

Código: [Seleccionar]
<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
var start = 0;
var positionY = window.innerHeight/2-125;
var nuevaVentana;
var controlSinusoidal=0;
var llamada;

 window.onload = function () {
                var ejemplo = document.getElementById('ejemplo');
                ejemplo.addEventListener("click", ejecutarEjemplo);

}

 

function ejecutarEjemplo () {
                nuevaVentana = window.open ('', 'miNombre', 'width=250, height=250, resizable=true, menubar=yes');
                nuevaVentana.document.write('<h1>Aprenda a programar ahora. Aproveche la oportunidad</h1>');
                nuevaVentana.focus();
                nuevaVentana.moveTo(0,positionY);
                llamada = nuevaVentana.setInterval( sine, 1000/30 );
}

 

function sine(){
  controlSinusoidal = controlSinusoidal + Math.PI/256;
  positionY = 100*Math.sin(controlSinusoidal);
  start += 2;
  if ((window.screen.availWidth-(250+(nuevaVentana.outerWidth-nuevaVentana.innerWidth))) >= start){
      nuevaVentana.moveTo(start, window.innerHeight/2-100+positionY);
  }else{
      nuevaVentana.clearInterval(llamada);
      alert ('Se terminó');
  }
}
</script>

</head>

<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>

<div style="color:blue; margin:20px;" id ="ejemplo">Pulsa aquí</div>

</body>
</html>


Citar
g) Modifica el código para que cuando la ventana llegue al lateral derecho de la pantalla haga un efecto de “rebote” y empiece a moverse en sentido opuesto al que venía (es decir, subiendo y bajando pero ahora de derecha a izquierda), hasta llegar al lateral izquierdo y volver a rebotar, y así indefinidamente….


Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
var start = 0;
var positionY = window.innerHeight/2-125;
var nuevaVentana;
var controlSinusoidal=0;
var llamada;
 window.onload = function () {
                var ejemplo = document.getElementById('ejemplo');
                ejemplo.addEventListener("click", ejecutarEjemplo);

}

function ejecutarEjemplo () {
                nuevaVentana = window.open ('', 'miNombre', 'width=250, height=250, resizable=true, menubar=yes');
                nuevaVentana.document.write('<h1>Aprenda a programar ahora. Aproveche la oportunidad</h1>');
                nuevaVentana.focus();
                nuevaVentana.moveTo(0,positionY);
                llamada = nuevaVentana.setInterval( sine, 1000/30 );
}

 

function sine(){
  controlSinusoidal = controlSinusoidal + Math.PI/256;
  positionY = 100*Math.sin(controlSinusoidal);
  if (start ==(window.screen.availWidth-(250+(nuevaVentana.outerWidth-nuevaVentana.innerWidth)))){
      sentido = false;
  }
   
  if (start == 0){
      sentido = true;
  }
   
  if (sentido == true){
      start += 2;
  }else{
    start -= 2;
  }
 
      nuevaVentana.moveTo(start, window.innerHeight/2-100+positionY);
   
}

</script>

</head>

<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>

<div style="color:blue; margin:20px;" id ="ejemplo">Pulsa aquí</div>

</body>
</html>

Saludos y buen finde!!!!!!
« Última modificación: 13 de Marzo 2016, 19:43 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

Bien a) b) d) e) f) g)

c) La frecuencia de refresco es la frecuencia cada 1000/30 ms (milisegundos), es decir, aproximadamente 33.33 milisegundos ó 0.0333 segundos

En la pregunta g) window.screen.availWidth puede no funcionar en algunos navegadores. En el que yo lo he probado sí funciona bien

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".