Domanda

Ho bisogno di fare in modo che una sola istanza di un file SWF è aperta in qualsiasi momento su un computer, sia che si tratti in 2 finestre del browser, oppure due diversi browser.

Come posso fare per farlo?

Finora ho pensato due soluzioni possibili:

1) Utilizzando uno SharedObject Flash - ma dal momento che non scadono mai, se l'utente chiude la finestra del browser senza chiamare il mio smettere di funzione per rimuoverlo, l'oggetto restante interferirà con altre nuove sessioni. (Forse un numero casuale e timestamp per identificare l'istanza?)

2) Utilizzando una LocalConnection - un po hacker, questa relys sulla swf rilevare se un oggetto LocalConnection viene utilizzato, e non caricare se questo è il caso. Ma localconnections sembra bloccarsi alla minima provocazione, quindi sono un po 'diffidente di usarlo.

È stato utile?

Soluzione

Credo LocalConnection ha uno advatage over soluzione SharedObject - permette nomi globale-scope LocalConnection, anche se SharedObjects locali sono sempre memorizzati per dominio, per quanto ne so

.

Per quanto riguarda SharedObject, l'unica opzione è quella di mantenere il timestamp regolarmente aggiornata in essa, e controllare ogni volta le tue corse .swf.

Così mi piacerebbe optare per una soluzione semplice basata LocalConnection, perché è abbastanza semplice, e non ho mai sperimentato problemi con LocalConnection.

public class LCTest extends Sprite
{
    public function LCTest()
    {
        var lc:LocalConnection = new LocalConnection();
        lc.allowDomain("*");
        try
        {
            lc.connect("_myLCLock"); // underscore for global scope
            trace('not running, can init');
        }
        catch (e:ArgumentError)
        {
            trace('already running');
        }
    }
}

Altri suggerimenti

Se il file SWF è disponibile solo da un posto, penso che Shared Objects sono una scommessa sicura. Non credo che ci sia alcun bisogno di preoccuparsi sessioning complicato, ci dovrebbe essere un evento di arresto si può prendere anche quando il browser viene chiuso manualmente. (Anche se non c'è, sono sicuro al 99% che PS vengono lavate allo spegnimento non importa cosa, così alcuni soluzione dovrebbe essere possibile.)

Tuttavia, Shared Objects sono intrinsecamente legati alla posizione del file SWF, in modo che un utente potrebbe eludere il metodo di cui sopra con la visualizzazione di una seconda copia del file SWF che avevano salvato in locale, o su di un altro server web, o qualsiasi altra cosa. Se questo è una preoccupazione, e se il file SWF sarebbe ancora lavorare in una situazione del genere, allora penso LocalConnection è l'unica scelta. Ma non ho mai trovato LC di essere molto affidabile sia. Non so se potrebbe essere fatto a prova di proiettile, ma credo che sia l'unica altra opzione.

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