Klasa LocalConnection umożliwia tworzenie plików SWF, które mogą wysyłać instrukcje do innych plików SWF bez konieczności użycia metody fscommand() i języka JavaScript. Obiekty LocalConnection mogą się komunikować jedynie między plikami SWF uruchomionymi na tym samym komputerze klienckim, ale mogą również być uruchomione w różnych aplikacjach. Na przykład: plik SWF działający w przeglądarce i plik SWF działający w projektorze mogą korzystać z informacji. Projektor może przechowywać informacje lokalnie, a plik SWF oparty na przeglądarce może łączyć się zdalnie. (Projektor jest plikiem SWF zapisanym w formacie, który może działać jako aplikacja autonomiczna — tj. projektor nie wymaga programu Flash Player do zainstalowania, ponieważ jest osadzony w pliku wykonywalnym).
Obiekty LocalConnection mogą być używane w celu komunikacji między plikami SWF korzystającymi z różnych wersji języka ActionScript:
-
Obiekty ActionScript 3.0 LocalConnection mogą komunikować się z obiektami LocalConnection utworzonymi w języku ActionScript 1.0 lub 2.0.
-
Obiekty ActionScript 1.0 lub 2.0 LocalConnection mogą komunikować się z obiektami LocalConnection utworzonymi w języku ActionScript 3.0.
Program Flash Player obsługuje komunikację między obiektami LocalConnection różnych wersji w sposób automatyczny.
Najprostszym sposobem korzystania z obiektu LocalConnection jest umożliwienie komunikacji między obiektami LocalConnection utworzonymi w tej samej domenie lub tej samej aplikacji AIR. Dzięki temu zagadnienia bezpieczeństwa nie będą stanowiły problemu. Jeśli jednak wymagane jest umożliwienie komunikacji między domenami, istnieje kilka sposobów implementacji zabezpieczeń. Więcej informacji zawiera omówienie parametru
connectionName
metody
send()
oraz metod
allowDomain()
i
domain
w opisie klasy
LocalConnection
w
Skorowidzu języka ActionScript 3.0 dla platformy Adobe Flash
.
Obiekty LocalConnection mogą służyć do wysyłania i odbierania danych w jednym pliku SWF, ale Adobe nie zaleca wykonywania takich operacji. Należy w takich przypadkach korzystać z obiektów współużytkowanych.
Istnieją trzy sposoby dodawania metod wywołań zwrotnych do obiektów LocalConnection:
-
Utwórz podklasę klasy LocalConnection i dodaj metody.
-
Ustaw dla właściwości
LocalConnection.client
obiekt, który implementuje metody.
-
Utwórz klasę dynamiczną, która rozszerza klasę LocalConnection i dynamicznie dołącz metody.
Pierwszy sposób dodawania metod wywołań zwrotnych uwzględnia rozszerzenie klasy LocalConnection. Należy zdefiniować metody w klasie niestandardowej, a nie dodawać je dynamicznie do instancji LocalConnection. To podejście zostało przedstawione w poniższym kodzie:
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);
}
}
}
W celu utworzenia nowej instancji klasy CustomLocalConnection należy użyć poniższego kodu:
var serverLC:CustomLocalConnection;
serverLC = new CustomLocalConnection("serverName");
Druga metoda dodawania metod wywołań zwrotnych obejmuje użycie właściwości
LocalConnection.client
. Korzystanie z tej właściwości wiąże się z tworzeniem niestandardowej klasy i przypisaniem nowej instancji do właściwości
client
, co przedstawia poniższy kod:
var lc:LocalConnection = new LocalConnection();
lc.client = new CustomClient();
Właściwość
LocalConnection.client
wskazuje metody wywołań zwrotnych obiektu, jakie powinny być używane. W poprzednim kodzie dla właściwości
client
ustawiono nową instancję klasy niestandardowej CustomClient. Domyślną wartością właściwości
client
jest bieżąca instancja LocalConnection. Właściwość
client
może zostać użyta, jeśli istnieją dwa moduły obsługi danych, które zawierają ten sam zestaw metod, ale działają inaczej — na przykład: w aplikacji, w której przycisk w oknie przełącza widok w drugim oknie.
W celu utworzenia klasy CustomClient można użyć poniższego kodu:
package
{
public class CustomClient extends Object
{
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
Trzeci sposób dodania metod wywołań zwrotnych — tworzenie klasy dynamicznej i dynamiczne dołączenie metod — jest bardzo podobny do użycia klasy LocalConnection z poprzednich wersji języka ActionScript, co przedstawia poniższy kod:
import flash.net.LocalConnection;
dynamic class DynamicLocalConnection extends LocalConnection {}
Metody wywołań zwrotnych mogą być dynamicznie dodawane do tej klasy za pomocą poniższego kodu:
var connection:DynamicLocalConnection = new DynamicLocalConnection();
connection.onMethod = this.onMethod;
// Add your code here.
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
Poprzedni sposób dodawania metod wywołań zwrotnych nie jest zalecany, ponieważ kod nie jest przenośny. Ponadto użycie tej metody tworzenia lokalnych połączeń może spowodować zmniejszenie wydajności, ponieważ dostęp do właściwości dynamicznych odbywa się znacznie wolniej niż dostęp do właściwości statycznych.
Właściwość isPerUser
Właściwość
isPerUser
została dodana do programu Flash Player (10.0.32) oraz środowiska AIR (1.5.2) w celu rozwiązania konfliktu występującego, gdy do komputera Mac loguje się więcej niż jeden użytkownik. W innych systemach operacyjnych właściwość ta jest ignorowana, ponieważ połączenie lokalne ma zawsze zasięg przypisany do pojedynczego użytkownika. Właściwość
isPerUser
powinna być w nowym kodzie ustawiana na wartość
true
. Domyślną wartością jest jednak, ze względu na zachowanie zgodności z poprzednimi wersjami, wartość
false
. Wartość domyślna może zostać zmieniona w przyszłych wersjach środowisk wykonawczych.