Pergunta

Eu tenho vários componentes quem é a posição da tela depende da resolução do monitor no qual a vida do navegador.

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

O problema que eu estou encontrando é que o método flash.system.Capabilities puxa a resolução do monitor principal conectado ao computador. Na maioria das situações isso não é um problema, mas em um dos meus computadores, tenho uma 1680x1050 e uma 1440x900. No trabalho, eu tenho um 1920x1200 e uma 1680x1050, então se eu abrir a página em um navegador no monitor menor, as coisas não estão centrados e meu painel de instrumentos é totalmente para a direita da tela.

Eu tenho um bloco de javascript que eu tentei, tanto em html e através de php, mas o problema é que se eu usar httpRequest ou URLLoader para pegar o arquivo html, eu tenho a fonte de html e se eu tentar o script php, eu recebo um bloco de script que está tentando escrever um cookie. Se essa página não foi visto antes de carregar o site flash, ou se os cookies são desativados, nunca é escrito e eu estou longe.

Existe um método que eu possa usar, que não depende de cookies, para detectar a resolução do monitor que o navegador é, na verdade, e não apenas a resolução do primeiro monitor?

Foi útil?

Solução

Por que você não usar stage.stageWidth e Stage.stageHeight para fins de posicionamento?

EDIT: Ok, aqui está um exemplo. Estou pensando que você vai colocar este código dentro do recipiente onde loginBox também reside. A propriedade estágio é indefinido a menos que seu objeto é adicionado ao DisplayList, então você precisa para ouvir quando ele é adicionado e, em seguida, posicione o loginBox.

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

e

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

Além disso, se você tem palco scaleMode definido para noScale (o que talvez seja o caso), se você precisa de reposicionar constantemente a loginBox baseado em redimensionamento do navegador, você precisa ouvir um evento Event.RESIZE

stage.addEventListener(Event.RESIZE, onResize);

Outras dicas

Se você está tentando se comunicar entre Flash e Javascript, ExternalInterface é o caminho a percorrer. Em vez que escrever um cookie, basta pegar a informação de javascript, e enviá-lo para flash através de uma chamada de retorno.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top