De klasse LocalConnection biedt u de mogelijkheid SWF-bestanden te ontwikkelen die instructies kunnen verzenden naar andere SWF-bestanden zonder gebruik te maken van de methode fscommand() of JavaScript. Een object LocalConnection kan alleen communiceren via SWF-bestanden die op dezelfde clientcomputer worden uitgevoerd, maar een object LocalConnection kan door verschillende toepassingen worden uitgevoerd. Zo kunnen een SWF-bestand dat wordt uitgevoerd in een browser en een SWF-bestand dat wordt uitgevoerd in een projector informatie delen, waarbij de projector lokale informatie bijhoudt en het SWF-bestand in de browser extern verbinding maakt. (Een projector is een SWF-bestand dat is opgeslagen in een indeling die als een zelfstandige toepassing kan worden uitgevoerd. Met andere woorden, de projector vereist niet dat Flash Player is geïnstalleerd omdat dit programma is ingesloten in het uitvoerbare bestand.)
Een object LocalConnection kan worden gebruikt om te communiceren tussen SWF-bestanden die verschillende versies van ActionScript gebruiken:
-
Een object LocalConnection uit ActionScript 3.0 kan communiceren met objecten LocalConnection die in ActionScript 1.0 of 2.0 zijn gemaakt.
-
Een object LocalConnection uit ActionScript 1.0 of 2.0 kan communiceren met objecten LocalConnection die in ActionScript 3.0 zijn gemaakt.
Flash Player handelt deze communicatie tussen objecten LocalConnection van verschillende versies automatisch af.
De eenvoudigste manier om een LocalConnection-object te gebruiken, is om alleen communicatie tussen LocalConnection-objecten in hetzelfde domein of dezelfde AIR-toepassing toe te staan. Zo hoeft u zich geen zorgen te maken over de beveiliging. Wanneer het echter noodzakelijk is communicatie tussen domeinen toe te staan, kunt u op verschillende manieren beveiligingsmaatregelen implementeren. Zie de discussie over de parameter
connectionName
van de methode
send()
en de vermeldingen
allowDomain()
en
domain
in de vermelding van de klasse
LocalConnection
in de
Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform
voor meer informatie.
U kunt objecten LocalConnection gebruiken voor het verzenden en ontvangen van gegevens binnen één SWF-bestand, maar Adobe beveelt dit niet aan. Gebruik in plaats hiervan gezamenlijke objecten.
U kunt op drie manieren callback-methoden toevoegen aan uw objecten LocalConnection:
-
Maak een subklasse van de klasse LocalConnection en voeg methoden toe.
-
Stel de eigenschap
LocalConnection.client
in op een object dat de methoden implementeert.
-
Maak een dynamische klasse die LocalConnection uitbreidt en verbind de methoden dynamisch.
U kunt ten eerste callback-methoden toevoegen door de klasse LocalConnection uit te breiden. U definieert de methoden binnen de aangepaste klasse in plaats van ze dynamisch toe te voegen aan de instantie van LocalConnection. Dit wordt geïllustreerd in de volgende code:
package
{
import flash.net.LocalConnection;
public class CustomLocalConnection extends LocalConnection
{
public function CustomLocalConnection(connectionName:String)
{
try
{
connect(connectionName);
}
catch (error:ArgumentError)
{
// server already created/connected
}
}
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
Om een nieuwe instantie van de klasse CustomLocalConnection te maken, kunt u de volgende code gebruiken:
var serverLC:CustomLocalConnection;
serverLC = new CustomLocalConnection("serverName");
U kunt ten tweede ook callback-methoden toevoegen met de eigenschap
LocalConnection.client
. Hierbij maakt u een aangepaste klasse en wijst u een nieuwe instantie toe aan de eigenschap
client
, zoals in de volgende code wordt getoond:
var lc:LocalConnection = new LocalConnection();
lc.client = new CustomClient();
De eigenschap
LocalConnection.client
geeft de callback-methoden aan die moeten worden aangeroepen. In de voorgaande code werd de eigenschap
client
ingesteld op een nieuwe instantie van een aangepaste klasse, CustomClient. De standaardwaarde voor de eigenschap
client
is de huidige instantie van LocalConnection. U kunt de eigenschap
client
gebruiken als u twee gegevenshandlers gebruikt die dezelfde reeks methoden hebben, maar anders werken, bijvoorbeeld in een toepassing waar een knop in het ene venster de weergave in een tweede venster wijzigt.
U kunt de klasse CustomClient maken door de volgende code te gebruiken:
package
{
public class CustomClient extends Object
{
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
De derde manier om callback-methoden toe te voegen, een dynamische klasse maken en de methoden dynamisch koppelen, lijkt op het gebruik van de klasse LocalConnection in eerdere versies van ActionScript, zoals u ziet in de volgende code:
import flash.net.LocalConnection;
dynamic class DynamicLocalConnection extends LocalConnection {}
Callback-methoden kunnen dynamisch aan deze klasse worden toegevoegd met de volgende code:
var connection:DynamicLocalConnection = new DynamicLocalConnection();
connection.onMethod = this.onMethod;
// Add your code here.
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
De voorgaande methode om callback-methoden toe te voegen wordt niet aanbevolen omdat de code niet erg overdraagbaar is. Als u deze methode om lokale verbindingen te maken gebruikt, zou dit bovendien kunnen leiden tot prestatievermindering omdat de toegang tot dynamische eigenschappen veel trager is dan de toegang tot verzegelde eigenschappen.
isPerUser-eigenschap
De
isPerUser
-eigenschap is aan Flash Player (10.0.32) en AIR (1.5.2) toegevoegd om een conflict op te lossen dat optreedt wanneer meerdere gebruikers zijn aangemeld bij een Mac-computer. Op andere besturingssystemen wordt deze eigenschap genegeerd, aangezien de lokale verbinding altijd al bestemd was voor individuele gebruikers. In nieuwe code dient de
isPerUser
-eigenschap te worden ingesteld op
true
. De standaardwaarde is momenteel echter
false
ten behoeve van compatibiliteit met oudere versies. Het is mogelijk dat deze standaardinstelling in nieuwe versies van de runtimes wordt veranderd.