Med klassen LocalConnection kan du utveckla SWF-filer som skickar instruktioner till andra SWF-filer utan att använda metoden fscommand() eller JavaScript. LocalConnection-objekt kan bara kommunicera med andra SWF-filer som körs på samma klientdator, men de kan köras i olika program. En SWF-fil som körs i en webbläsare och en SWF-fil som körs i en projektor kan till exempel dela information. Projektorn har då den lokala informationen och den webbläsarbaserade SWF-filen ansluter via en fjärranslutning. (En projektor är en SWF-fil som har sparats i ett format som kan köras som ett fristående program, d.v.s.: Flash Player behöver inte vara installerat eftersom projektorn är inbäddad i den körbara filen.)
LocalConnection-objekt kan användas för kommunikation mellan SWF-filer med hjälp av olika ActionScript-versioner:
-
LocalConnection-objekt som har skapats i ActionScript 3.0 kan kommunicera med LocalConnection-objekt som har skapats i ActionScript 1.0 eller 2.0.
-
LocalConnection-objekt som har skapats i ActionScript 1.0 eller 2.0 kan kommunicera med LocalConnection-objekt som har skapats i ActionScript 3.0.
I Flash Player sker kommunikationen mellan LocalConnection-objekt som har olika versioner automatiskt.
Det enklaste sättet att använda ett LocalConnection-objekt på är att bara tillåta kommunikation mellan LocalConnection-objekt som finns i samma domän eller i samma AIR-program. På det sättet behöver du inte oroa dig för eventuella säkerhetsproblem. Om du måste tillåta kommunikation mellan olika domäner kan du dock vidta flera olika säkerhetsåtgärder. Mer information finns i avsnittet om parametern
connectionName
för metoden
send()
och i avsnitten om
allowDomain()
och
domain
för klassen
LocalConnection
i
Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen
.
Det går att använda LocalConnection-objekt för att skicka och ta emot data i en enda SWF-fil, men det är inget vi rekommenderar. Använd i stället delade objekt.
Du kan lägga till återkallningsmetoder till LocalConnection-objekt på något av följande tre sätt:
-
Använda underklasser till klassen LocalConnection och lägga till metoder
-
Ställa in egenskapen
LocalConnection.client
på ett objekt som implementerar metoderna
-
Skapa en dynamisk klass som utökar LocalConnection och bifogar metoder dynamiskt
Det första sättet att lägga till återkallningsmetoder på är att utöka klassen LocalConnection. Du definierar metoderna i den anpassade klassen i stället för att lägga till dem dynamiskt till LocalConnection-instansen. Följande kod visar detta:
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);
}
}
}
För att kunna skapa en ny instans av klassen CustomLocalConnection kan du använda följande kod:
var serverLC:CustomLocalConnection;
serverLC = new CustomLocalConnection("serverName");
Det andra sättet att lägga till återkallningsmetoder på är att använda egenskapen
LocalConnection.client
. Då skapar du en anpassad klass och tilldelar en ny instans till egenskapen
client
som i följande kod:
var lc:LocalConnection = new LocalConnection();
lc.client = new CustomClient();
Egenskapen
LocalConnection.client
anger vilka objektåterkallningsmetoder som ska anropas. I ovanstående kod ställdes egenskapen
client
in på en ny instans av en anpassad klass, CustomClient. Standardvärdet för egenskapen
client
är den aktuella LocalConnection-instansen. Du kan använda egenskapen
client
om du har två datahanterare som har samma uppsättning metoder, men fungerar på olika sätt. Det kan till exempel gälla ett program där en knapp i ett fönster växlar visningen i ett andra fönster.
Om du vill skapa klassen CustomClient använder du följande kod:
package
{
public class CustomClient extends Object
{
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
Det tredje sättet att lägga till återkallningsmetoder på innebär att skapa en dynamisk klass och att sedan bifoga metoderna dynamiskt. Det påminner om sättet som klassen LocalConnection användes på i tidigare versioner av ActionScript, vilket följande kod visar:
import flash.net.LocalConnection;
dynamic class DynamicLocalConnection extends LocalConnection {}
Återkallningsmetoder kan läggas till dynamiskt till den här klassen med hjälp av följande kod:
var connection:DynamicLocalConnection = new DynamicLocalConnection();
connection.onMethod = this.onMethod;
// Add your code here.
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
Det föregående sättet att lägga till återkallningsmetoder på rekommenderas inte, eftersom koden inte är särskild portabel. Dessutom skulle det här sättet att skapa lokala anslutningar på skapa prestandaproblem, eftersom det tar avsevärt mycket längre tid att få tillgång till dynamiska egenskaper jämfört med fasta (icke-dynamiska) egenskaper.
Egenskapen isPerUser
Egenskapen
isPerUser
lades till i Flash Player (10.0.32) och AIR (1.5.2) för att lösa en konflikt som inträffar när fler än en användare är inloggad på en Mac-dator. I andra operativsystem ignoreras egenskapen eftersom den lokala anslutningen alltid har omfattat endast enskilda användare. Egenskapen
isPerUser
ska vara inställd på
true
i ny kod. Det aktuella standardvärdet är emellertid
false
för bakåtkompabilitet. Standardvärdet kan ändras i framtida versioner av körningstider.