Domanda

Ho diversi componenti la cui posizione dello schermo dipende dalla risoluzione del monitor su cui vive il browser.

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

Il problema che sto riscontrando è che il metodo flash.system.Capabilities estrae la risoluzione del monitor principale collegato al computer. Nella maggior parte dei casi questo non è un problema, ma su uno dei miei computer ho un 1680x1050 e un 1440x900. Al lavoro, ho un 1920x1200 e un 1680x1050, quindi se apro la pagina in un browser sul monitor più piccolo, le cose non sono centrate e il mio pannello degli strumenti è completamente spento a destra dello schermo.

Ho un blocco di javascript che ho provato, sia in HTML che tramite PHP ma il problema è che se uso httpRequest o urlLoader per prendere il file HTML, ottengo la fonte di HTML e se provo il script php, ottengo un blocco di script che sta tentando di scrivere un cookie. Se quella pagina non è stata visitata prima del caricamento del sito flash o se i cookie sono disabilitati, non viene mai scritto e non vado da nessuna parte.

Esiste un metodo che posso usare, che non si basa sui cookie, per rilevare la risoluzione del monitor su cui si trova effettivamente il browser e non solo la risoluzione del primo monitor?

È stato utile?

Soluzione

Perché non usi stage.stageWidth e stage.stageHeight ai fini del posizionamento?

EDIT: Ok, ecco un esempio. Sto considerando che inserirai questo codice nel contenitore in cui risiede anche loginBox. La proprietà stage non è definita a meno che il tuo oggetto non venga aggiunto a DisplayList, quindi devi ascoltare quando viene aggiunto e quindi posizionare loginBox.

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

e poi

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

Inoltre, se stage scaleMode è impostato su noScale (che forse è il caso), se è necessario riposizionare costantemente loginBox in base al ridimensionamento del browser, è necessario ascoltare un evento Event.RESIZE

stage.addEventListener(Event.RESIZE, onResize);

Altri suggerimenti

Se stai cercando di comunicare tra flash e javascript, ExternalInterface è la strada da percorrere. Piuttosto che scrivere un cookie, basta prendere le informazioni da JavaScript e inviarlo a Flash tramite un callback.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top