El intérprete de DescartesJS reconoce y ejecuta las macros publicadas en un servidor, accediendo en línea; sin embargo, cuando ejecutamos una escena en nuestro equipo (en local), el intérprete no reconoce las macros. Esto es una limitación propia de JavaScript en relación a la lectura de ficheros en local.
Por ejemplo las dos escenas siguientes ha de verlas adecuadamente desde nuestro blog. Son escenas que utilizan una macro de usuario denominada sombras.txt cuyo objetivo es dibujar un par de sombras en las esquinas de la escena, y hay un control que cambia la trasparencia de esa sombra. Sin embargo si descarga esas escenas y las ejecuta en local en la primera no observará las sombras y en la segunda sí.
escena6.html | escena7.html |
Las escenas anteriores puede descargarlas desde este enlace e identificar el archivo correspondiente con el nombre indicado
¿Cómo podemos ejecutar los macros en local?
Para poder ejecutar una macro en local es necesario que el código de ésta esté incorporado en el código html de la página que contiene la escena que llama a esa macro. Para ello, es necesario incorporar un «script» en ese archivo html siguiendo el siguiente esquema:
<script type=»descartes/macro» id=»direccionamiento del macro usado en la escena«>
Contenido del fichero de la macro, es decir, la macro en sí
</script>
En el siguiente vídeo, puedes observar lo que acontece y el procedimiento para subsanarlo:
id=’azul’ expresión=’0′ evaluar=’una-sola-vez’ constante=’si’ tipo=’segmento’ expresión='(0,0,0)(a,b,c)’ color='(rojo,verde,azul)’ ancho=’3′
Hola.
Tengo una macro que debe indicar un texto. El parámetro que contiene el texto es el siguiente:
…
…
tipo=’texto’ expresión='[36,403]’ familia=’s’ s.intervalo='[0,1]’ s.pasos=’8′ dibujar-si=’N=2′ texto='{\rtf1\uc0{\fonttbl\f0\fcharset0 Times New Roman;\f1\fcharset0 Times New Roman;\f2\fcharset0 Courier New;}{\colortbl\red0\green0\blue0;\red0\green0\blue255;}\cf0\f1\fs36{\*\mjaformula{\expr nom1}}\f2\fs24\cf1\par \par}’ fuente=’Times New Roman,PLAIN,18′ fijo=’sí’
…
…
como se puede ver, en la propiedad «texto» indica que debe mostrar el valor de la variable «nom1» (variable que contiene la escena y que contiene el texto correctamente). Este macro pertenece a un proyecto que estaba creado con un applet, es decir, el applet hacía uso de la macro. He transformado el applet por una escena DescartesJS y la macro ha dejado de funcionar.
He incluido la macro dentro del fichero que contiene la escena, pero no recoje correctamente el valor y me muestra 0.00
¿Alguna idea? un saludo
Gracias Enric por realizar esta matización y aclaración en la que ubicas que esta limitación es dependiente del navegador y de su configuración. Dado que existe esta dependencia es conveniente incluir el código del macro embebido, para que usuarios de otros navegadores puedan disfrutar en local de nuestros recursos.
Esa limitación y cómo eliminarla, modificando la configuración del navegador, se especifica en el artículo «Ficheros y vectores«, pero seamos conscientes que se relaja la seguridad del navegador y consecuentemente del sistema informático de quien aborda este cambio.
Sin embargo, cuando uso FireFox, si que puedo trabajar con las macros en local(aunque no haya incorporado el código en la página web).