La classe LocalConnection permet de développer des fichiers SWF qui peuvent échanger des instructions avec d’autres fichiers SWF sans utiliser la méthode fscommand() ou JavaScript. Les objets LocalConnection peuvent uniquement communiquer entre des fichiers SWF exécutés sur le même ordinateur client, mais ils peuvent concerner différentes applications. Par exemple, un fichier SWF exécuté dans un navigateur et un fichier SWF de projection peuvent partager des informations, le fichier de projection se chargeant de maintenir les informations locales et le fichier SWF du navigateur se connectant à distance. (un fichier de projection est un fichier SWF enregistré dans un format tel qu’il peut s’exécuter de manière autonome ; il n’est donc pas nécessaire de disposer de Flash Player pour le lire, car il est incorporé dans le fichier exécutable).
Les objets LocalConnection peuvent être utilisés pour communiquer entre des SWF utilisant différentes versions d’ActionScript :
-
Les objets LocalConnection créés dans ActionScript 1.0 ou 2.0 peuvent communiquer avec les objets LocalConnection créés dans ActionScript 3.0.
-
Les objets LocalConnection créés dans ActionScript 1.0 ou 2.0 peuvent communiquer avec les objets LocalConnection créés dans ActionScript 3.0.
Flash Player gère automatiquement les communications entre les objets LocalConnection de versions différentes.
La façon la plus simple d’utiliser un objet LocalConnection consiste à autoriser la communication uniquement entre des objets LocalConnection se trouvant dans le même domaine ou dans la même application AIR. Vous évitez ainsi les problèmes de sécurité. Toutefois, si vous devez autoriser les communications entre les domaines, vous disposez de diverses méthodes pour mettre en œuvre des mesures de sécurité. Pour plus d’informations, voir l’analyse du paramètre
connectionName
de la méthode
send()
, ainsi que les entrées
allowDomain()
et
domain
dans le code associé à la classe
LocalConnection
du manuel
Guide de référence ActionScript 3.0 pour la plate-forme Adobe Flash
.
Il est possible d’utiliser des objets LocalConnection pour envoyer et recevoir des données au sein d’un fichier SWF unique. Toutefois, Adobe ne recommande pas cette pratique. Faites de préférence appel aux objets partagés.
Les méthodes de rappel peuvent être ajoutées aux objets LocalConnection de trois manières :
-
Créer des sous-classes de LocalConnection et ajouter des méthodes
-
Définir la propriété
LocalConnection.client
sur un objet qui implémente ces méthodes
-
Créer une classe dynamique qui étend la classe LocalConnection et y joindre dynamiquement des méthodes
La première manière d’ajouter des méthodes de rappel est d’étendre la classe LocalConnection. Vous pouvez définir les méthodes au sein de la classe personnalisée, plutôt que de les ajouter dynamiquement à l’occurrence de LocalConnection. Ceci est illustré par le code suivant :.
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);
}
}
}
Pour créer une occurrence de la classe CustomLocalConnection, vous pouvez utiliser le code suivant :
var serverLC:CustomLocalConnection;
serverLC = new CustomLocalConnection("serverName");
La deuxième manière d’ajouter des méthodes de rappel consiste à utiliser la propriété
LocalConnection.client
. Il s’agit de créer une classe personnalisée et d’affecter une nouvelle occurrence à la propriété
client
, comme le montre le code suivant :
var lc:LocalConnection = new LocalConnection();
lc.client = new CustomClient();
La propriété
LocalConnection.client
indique les méthodes de rappel d’objet à appeler. Dans le code précédent la propriété
client
était définie sur une nouvelle occurrence de la classe personnalisée CustomClient. La valeur par défaut de la propriété
client
est l’occurrence de LocalConnection actuelle. Vous pouvez utiliser la propriété
client
si vous disposez de deux gestionnaires de données dotés du même jeu de méthodes mais qui agissent différemment ; par exemple, dans une application où un bouton situé dans une fenêtre permet d’afficher le contenu d’une deuxième fenêtre.
Pour créer la classe CustomClient, vous pouvez utiliser le code suivant :
package
{
public class CustomClient extends Object
{
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
La troisième manière d’ajouter des méthodes de rappel consiste à créer une classe dynamique et d’y joindre dynamiquement des méthodes. Elle se rapproche de l’utilisation de la classe LocalConnection dans les versions précédentes d’ActionScript, comme le montre le code suivant :
import flash.net.LocalConnection;
dynamic class DynamicLocalConnection extends LocalConnection {}
Les méthodes de rappel peuvent être ajoutées dynamiquement à cette classe à l’aide du code suivant :
var connection:DynamicLocalConnection = new DynamicLocalConnection();
connection.onMethod = this.onMethod;
// Add your code here.
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
Cette manière d’ajouter des méthodes de rappel est déconseillée, car le code n’est pas vraiment portable. En outre, cette méthode de création de connexions locales pourrait présenter des problèmes de performance car l’accès aux propriétés dynamiques prend bien plus de temps que l’accès aux propriétés scellées.
Propriété isPerUser
La propriété
isPerUser
a été intégrée à Flash Player (10.0.32) et AIR (1.5.2) pour résoudre un conflit qui se produit lorsque plusieurs utilisateurs ont ouvert une session sur un ordinateur Mac. Elle n’est pas prise en charge par les autres systèmes d’exploitation, car seuls des utilisateurs spécifiques sont autorisés à se connecter localement. Définissez la propriété
isPerUser
sur
true
dans le nouveau code. Actuellement, la valeur par défaut correspond toutefois à
false
à des fins de compatibilité ascendante. Elle sera peut-être modifiée dans les versions futures des moteurs d’exécution.