Pregunta

Tengo varios componentes cuya posición en la pantalla depende de la resolución del monitor en el que vive el navegador.

loginBox.x = (flash.system.Capabilities.screenResolutionX - loginBox.width) / 2; loginBox.y = (flash.system.Capabilities.screenResolutionY - loginBox.height) / 2;

El problema que encuentro es que el método flash.system.Capabilities extrae la resolución del monitor principal conectado a la computadora. En la mayoría de las situaciones esto no es un problema, pero en una de mis computadoras, tengo un 1680x1050 y un 1440x900. En el trabajo, tengo un 1920x1200 y un 1680x1050, así que si abro la página en un navegador en el monitor más pequeño, las cosas no están centradas y mi panel de herramientas está completamente a la derecha de la pantalla.

Tengo un bloque de javascript que he probado, tanto en html como a través de php, pero el problema es que si uso httpRequest o urlLoader para obtener el archivo html, obtengo la fuente de html y si intento PHP script, obtengo un bloque de script que intenta escribir una cookie. Si esa página no ha sido visitada antes de cargar el sitio flash, o si las cookies están deshabilitadas, nunca se escribe y no estoy en ninguna parte.

¿Hay algún método que pueda usar, que no se base en cookies, para detectar la resolución del monitor en el que está realmente el navegador, y no solo la resolución del primer monitor?

¿Fue útil?

Solución

¿Por qué no usas stage.stageWidth y stage.stageHeight con fines de posicionamiento?

EDITAR: Ok, aquí hay un ejemplo. Estoy considerando que colocará este código dentro del contenedor donde también se encuentra loginBox. La propiedad del escenario no está definida a menos que su objeto se agregue a la Lista de visualización, por lo que debe escuchar cuándo se agrega y luego colocar el cuadro de inicio de sesión.

// in the constructor
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

y luego

private function onAddedToStage(evt:Event) {
    loginBox.x = (stage.stageWidth - loginBox.width)/2;
    loginBox.y = (stage.stageHeight - loginBox.height)/2;
}

Además, si tiene Stage scaleMode establecido en noScale (que tal vez sea el caso), si necesita reposicionar constantemente el loginBox en función del cambio de tamaño del navegador, debe escuchar un evento Event.RESIZE

stage.addEventListener(Event.RESIZE, onResize);

Otros consejos

Si está intentando comunicarse entre flash y javascript, ExternalInterface es el camino a seguir. En lugar de escribir una cookie, simplemente tome la información de javascript y envíela a flash a través de una devolución de llamada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top