Google Web after-hours

Contador en flash JSFL Traductor
La cadena serverString contiene una lista de variables con los nombres y valores correspondientes a la todos los nombres y propiedades del objeto Capabilities.

Éste es el valor de serverString en mi sistema:

A=t&MP3=t&AE=t&VE=t&ACC=f&DEB=t&V=WIN%206%2C0%2C21%2C0&M=Macromedia Windows&R=1024x768&DP=72&COL=color&AR=1.0&I=point&OS=Windows XP&L=es

En combinación con LoadVars.decode obtenemos una eficaz herramienta para trabajar con dichas variables.

miSistema = System.capabilities.serverString;
mi_vars = new LoadVars();
mi_vars.decode(miSistema);
for (var i in mi_vars) {
        trace(i+“:”+mi_vars[i]);
}

Resultado tras aplicar LoadVars.decode()

L:es
OS:Windows XP
I:point
AR:1.0
COL:color
DP:72
R:1024x768
M:Macromedia Windows
V:WIN 6,0,21,0
DEB:t
ACC:f
VE:t
AE:t
MP3:t
A:t

Utilidad
Gracias a este script podemos determinar valores del sistema tales como el idioma, resolución de pantalla, sistema operativo, versión del player, etc. y redirigir a nuestro visitante a la versión adecuada del sitio.

Ejemplo
Detectar el idioma del sistema para cargar una versión adecuada del sitio

if (mi_vars.l == “es”) {
        trace(“Idioma = Español”);
        mc_holder.loadMovie(“espanyol.swf”);
} else if (mi_vars.l == “en”) {
        trace(“Idioma = Inglés”);
        mc_holder.loadMovie(“ingles.swf”);
}

16 Responses to 'System.capabilities.serverString'

  1. luisfer Says:

    esto se ve muy util pero toni una duda el idioma que identifica es el del OS ??? una duda un poco tonta pero …..

    saludos

  2. hector Says:

    esto es en Mx o en Mx2k4 ??

  3. tonilopez Says:

    En efecto, el idioma es el que tengas en tu OS.

    Provado con MX, pero no veo porque no ha de funcionar con 2004.

    saludos

  4. MOliver Says:

    Muy buena data!!
    Muy util para determinar idiomas o resolucion del visitante

  5. Montxo Says:

    Podrí as ser tan amable de especificarme que significan las vars I, AR, DEB, VE, AE, A?

    Muchas gracias.

  6. tonilopez Says:

    Dejo la lista completa

    System.capabilities.hasAccessibility nombre cadena = ACC
    indica soporte para Microsoft Active Accesssibility
    // –
    System.capabilities.hasAudio nombre cadena = A
    indica soporte para audio
    // –
    System.capabilities.hasAudioEncoder nombre cadena = AE
    soporte para transmitir sonido (pe micrófono)
    // –
    System.capabilities.hasMP3 nombre cadena = MP3
    soporte para MP3
    // –
    System.capabilities.hasVideoEncoder nombre cadena = VE
    soporte para video
    // –
    System.capabilities.input nombre cadena = I
    tipo de dispositivo de entrada
    // –
    System.capabilities.isDebugger nombre cadena = DEB
    indica si el player es una versión release o debuger
    // –
    System.capabilities.language nombre cadena = LAN
    idioma del sistema operativo
    // –
    System.capabilities.manufacturer nombre cadena = M
    organización creadora del player
    // –
    System.capabilities.os nombre cadena = OS
    System.capabilities.pixelAspectRatio nombre cadena = AR
    ratio de un pixel en pantalla
    // –
    System.capabilities.screenColor nombre cadena = COL
    modo soportado por la pantalla(color, escala de grises o blanco y negro)
    // –
    System.capabilities.screenDPI nombre cadena = DP
    pixels por pulgadas (lo normal son 72)
    // –
    System.capabilities.screenResolutionX nombre cadena = R
    ancho de la pantalla en pixels
    // –
    System.capabilities.screenResolutionY nombre cadena = R
    alto de la pantalla en pixels
    // –
    System.capabilities.version nombre cadena = V
    versión del player

  7. jesus Says:

    Y con esto serí a posible asignar un nuevo valor de resolucion?
    es decir si tengo de resultado en resolucion
    R:1024x768
    y la reajusto a R:800x600 mediante una asignacion
    cambiarí a la resolucion del monitor automaticamente a traves de ese comando?

    o tendrí a que hacerlo mediante:
    System.capabilities.screenResolutionX nombre cadena = R
    ancho de la pantalla en pixels
    // –
    System.capabilities.screenResolutionY nombre cadena = R
    alto de la pantalla en pixels

    echame una mano please, es muy importante

    gracias de antemano y un saludo

  8. tonilopez Says:

    Hola Jesús,

    las propiedades del objeto capabilities, te ofrecen información acerca del entorno,lo que puedes hacer, como supongo ya habrás deducido es crear diferentes versiones y cargarlas dependiendo del valor de la propiedad. Tambien puedes utilizar el objeto Stage para acomodar tu pelí cula al tamaño del navegador, pero nunca modificar la resolución de pantalla (por lo menos desde flash).

    Puedes leer estos artí culos sobre el objeto Stage que quizá te sean útiles:

    http://www.after-hours.org/blog/archives/000285.html

    http://www.after-hours.org/blog/archives/000286.html

    http://www.after-hours.org/blog/archives/000287.html

    http://www.after-hours.org/blog/archives/000293.html

    http://www.after-hours.org/blog/archives/000297.html

    saludos!

  9. jesu Says:

    Una pena la verdad. Creia haber encontrado la solucion. Sin embargo, he oido algo sobre una API
    que se llama FlashBox que en teorí a permitiria hacerlo. Alguien sabe como funciona?

  10. Misael Cadena Says:

    Tengo una web realizada completamente en flash optimizada para resoluciones de 1024.

    En el index de la web pongo únicamente un boton de Entrar .swf que linkea a un archivo web1.html que tiene el .swf de la web.

    Lo que intento hacer es que:

    * El boton de Entrar .swf detecte la resolucion de la pantalla y dependiendo de eso, al dar clic me cargue web1.html ó web2.html

    web1.html contiene un .swf que se escala (para resoluciones de 800x600)
    web2.html contiene un .swf que no se escala (para resoluciones de 1024 en adelante)

    ¿Se podrá hacer esto?
    ¿Como serí a?
    ¿Que código serí a en el boton?

    Ayuda Porfavor
    GRACIAS

  11. tonilopez Says:

    Hola Misael,

    copia este código en el primer fotograma de entrar.swf (quita el código que tengas para el botón de entrar)

    // –
    cargarSegunResolucion = function () {
    ancho = System.capabilities.screenResolutionX;
    switch (ancho) {
    case 800 :
    getURL("web1.html", “_self");
    break;
    case 1024 :
    getURL("web2.html", “_self");
    break;
    default :
    break;
    }
    };
    // –

    miboton.onRelease = cargarSegunResolucion;

    // –

    Saludos

  12. Next Says:

    Siguiendo con el tema de las resoluciones. Yo he creado una presentación en CD que se va a proyectar a través de un proyector de video a una resolución de 640x480.

    Siguiendo el primer listado y viendo los resultados de las variables he decido comprobar el tamaño de pantalla del usuario y si es distinta a la que quiero aparezca un mensaje en pantalla.

    Al principio hice esto:

    miSistema = System.capabilities.serverString;
    mi_vars = new LoadVars();
    mi_vars.decode(miSistema);
    for (var i in mi_vars) {
    trace(i+":"+mi_vars[i]);
    }

    // En el fotograma número dos

    if (mi_vars.R == “640x480″) {
    gotoAndPlay ("Inicio");
    } else {
    trace (Cambie la resolución a 640x480);
    }

    Como sabéis R es el valor del tamaño de pantalla y la de así R:1024x768, pero no funciona. Por lo que cambié al siguiente código:

    ancho = System.capabilities.screenResolutionX;
    if (ancho == 640) {
    gotoAndPlay ("Inicio");
    } else {
    trace (Cambie la resolución a 640x480);
    }

    Que si funciona. La primera opción me interesaba más por que puedo definir el tamaño de ancho y alto de la pantalla en una sóla sentencia. El motivo es que un usuario puede tener en pantalla 640x768, por lo que en mi caso me fastidiarí a un poco.

    Se que la solución es controlar la altura con la sentencia:

    altura = System.capabilities.screenResolutionY;

    pero mi pregunta es ¿por que el primer listado no funciona?

    Un saludo y gracias

    NEXT

  13. tonilopez Says:

    NEXT,

    el primer listado funciona, me ha parecido raro que dijeras que no, por lo que lo he probado y si.

    Saludos

  14. Next Says:

    No se lo probaré de nuevo.

    Gracias

    Next

  15. Chumbi Says:

    Hola, se podrí a hacer lo mismo para el idioma? Lo que quiero es que una vez detectado el idioma del sistema, mediante un boton, cambiar la variable del idioma para que el flash actúe como si de un sistema inglés se tratara. Es para usar la opción Strings del Flash 2004 (ventanas—> otros paneles —> cadenas —> comando + F11)

    Un saludo y gracias

  16. tonilopez Says:

    Hola Chumbi, si, puedes usarlo para eso, precisamente etoy desarrolando un sistema para selección de idioma que además guarda el idioma seleccionado (en caso de que el usuario seleccione otro diferente al que marca el sistema) en un shraredObject.

    Pruebas esto:

    trace(System.capabilities.language )

    devuelve : ‘es’

    Saludos