Interface entre deux fichiers à l'aide de la classe LocalConnection

Dans ce tutoriel, nous utiliserons la classe AS3 LocalConnection pour envoyer et recevoir des données entre deux fichiers SWF différents. Aujourd’hui, nous allons utiliser cela pour détecter les mouvements de la souris dans un fichier SWF et les refléter dans un autre..


Aperçu du résultat final

Jetons un coup d'œil au résultat final sur lequel nous allons travailler. Ci-dessous deux fichiers complètement différents.

Ce tutoriel est divisé en deux sections. Le premier se concentrera sur le fichier SWF d’envoi et le second consistera à construire le fichier SWF de réception. Je vais aussi utiliser la classe de document tout au long de ce tutoriel.


Section 1: Envoi d'informations


Étape 1: Envoi d'un nouveau document Flash

Tout d'abord, créez un nouveau fichier ActionScript 3.0..

Ensuite, redimensionnez le fichier à 600px × 250px.


Étape 2: Envoi Ajouter un arrière-plan

Cette étape n'est pas nécessaire pour la fonctionnalité, mais davantage pour l'esthétique. Ajoutez votre image sur la scène puis verrouillez son calque.


Étape 3: Envoi de la création d'une classe de document

Enregistrez votre fichier FLA sous Envoi.fla puis créez un fichier AS vierge. Enregistrez ce fichier dans le même dossier que votre fichier FLA et nommez-le. Envoi.

Retournez ensuite et liez la classe de document à la FLA.


Étape 4: Envoi de la configuration de la classe de document

Ajoutez un paquet vierge, une classe et une fonction constructeur à votre fichier AS.

 package public class Sending étend MovieClip public function Sending () 

Étape 5: Envoi de classes d'importation

La première chose que nous devons faire dans notre classe de document est d’importer toutes les classes dont nous aurons besoin à l’avenir..

 package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.events.MouseEvent; import flash.net.LocalConnection; classe publique Envoi étend MovieClip fonction publique Sending () 

Étape 6: Envoi de l'utilisation de LocalConnection

Avant de commencer à envoyer des informations avec une connexion locale, il est préférable que nous apprenions exactement comment les utiliser. C'est très simple et ne comporte que deux parties:

  • Déclarer une instance de la classe.
  • En utilisant le .envoyer() méthode.

Déclarer une instance de la classe Local Connection est simple:

 private var localConnection: LocalConnection = new LocalConnection ();

Ensuite, nous devons utiliser le .envoyer méthode. Cette méthode se connecte à l'autre fichier SWF, puis déclenche une fonction dans le fichier de réception, qui gère les variables envoyées. Voyons un exemple:

 localConnection.send ("_ connectionName", "methodName", variable1, variable2);

Le nom de la connexion et le nom de la méthode doivent être placés entre guillemets (en tant que chaînes). En outre, il est préférable de démarrer le nom de la connexion avec un souligner (_). Le nom de la méthode est simplement le nom de la fonction que vous voulez déclencher dans le fichier SWF de réception. La fonction, dans le fichier SWF destinataire, sera fournie avec les variables suivantes: arguments. Maintenant, utilisons ce que nous venons d'apprendre!


Étape 7: Envoi de variables et constructeur

Voici toutes les variables que nous devons déclarer:

 private var localConnection: LocalConnection = new LocalConnection (); private var mX: Number; var privé: nombre;

Après avoir déclaré une instance de notre connexion locale, nous créons deux variables. mX tiendra la valeur 'x' de la souris et mon tiendra la valeur 'y' de la souris. Ce code doit être placé avant la fonction constructeur, mais à l'intérieur de la classe.

Suivant est la fonction constructeur. Cette fonction contient une seule ligne: ajouter un écouteur d’événement pour le Event.ENTER_FRAME un événement. Nous couvrirons la fonction qu'il appelle à l'étape suivante. Voici la fonction constructeur terminée:

 fonction publique Sending () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); 

Étape 8: Envoi de la fonction mainLoop

Dans l'étape précédente, nous avons créé un écouteur d'événement qui appelle cette fonction une fois par image. Cette fonction fera deux choses. La première consiste à définir les variables mX et mon égale à celle de la souris 'X' et 'y' position respectivement. La seconde consiste à envoyer ces deux variables, via la connexion locale, à l'autre fichier SWF..

Voici la fonction finie:

 fonction privée mainLoop (e: Event): void mX = mouseX; mY = mouseY; localConnection.send ("_ mouseConnection", "processData", mX, mY); 

Lors de l'envoi des données, nous utilisons "_mouseConnection" comme nom de connexion et "données de processus" comme nom de méthode. Cela signifie qu'il va essayer d'appeler processData (mX, mY).


Étape 9: Envoi d'un événement d'état

Nous sommes presque finis. Il ne reste plus qu'à gérer l'événement d'état. L'objet LocalConnection distribue des événements d'état; dans ce projet, nous n'utiliserons pas les événements; cependant, si nous ne les écoutons pas, nous recevrons des erreurs telles que: 'Erreur n ° 2044: StatusEvent non géré. niveau = erreur, code = '

Nous avons déjà importé l'événement à l'étape 5. Nous allons donc d'abord ajouter un écouteur d'événement pour un événement de statut dans la fonction constructeur:

 fonction publique Sending () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus); 

Nous devons maintenant créer une fonction vierge pour répondre à l'événement. La fonction s'appelle 'onStatus'.

 fonction privée onStatus (e: StatusEvent): void ;

Étape 10: Envoi du résumé

Dans la section 1, nous avons appris à utiliser la classe LocalConnection pour envoyer des informations, via une connexion, à un autre fichier flash. Voici notre fichier AS fini pour la section 1:

 package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.events.MouseEvent; import flash.net.LocalConnection; public class Envoi s'étend à MovieClip private var localConnection: LocalConnection = new LocalConnection (); private var mX: Number; var privé: nombre; fonction publique Sending () stage.addEventListener (Event.ENTER_FRAME, mainLoop, false, 0, true); localConnection.addEventListener (StatusEvent.STATUS, onStatus);  fonction privée mainLoop (e: Event): void mX = mouseX; mY = mouseY; localConnection.send ("_ mouseConnection", "processData", mX, mY);  fonction privée onStatus (e: StatusEvent): void ; 

Section 2: Recevoir des informations


Étape 11: Réception d'un nouveau document Flash

Tout d'abord, créez un nouveau fichier ActionScript 3.0..

Ensuite, redimensionnez le fichier à 600px × 250px.


Étape 12: Réception Ajouter un arrière-plan

Comme auparavant, cette étape n'est pas nécessaire pour la fonctionnalité, mais davantage pour l'esthétique. Ajoutez votre image sur la scène puis verrouillez son calque.


Étape 13: Réception Créer un objet

Nous devons maintenant créer un objet pour refléter le pointeur de la souris. Il recevra le même X et Y valeurs comme le pointeur de la souris dans l'autre fichier via ActionScript.

Dans cet exemple, j'utilise une icône représentant un crayon (fournie par WeFunction). Importez l’icône sur la scène, dans son propre calque, puis convertissez-la en MovieClip et attribuez-lui un nom d’occurrence. curseur_mc.

Par défaut, le point d'alignement (la croix, pas le cercle) se trouve dans le coin supérieur gauche. Cela signifie que lorsque nous aurons terminé le projet, le crayon sera légèrement éloigné de l'emplacement de la souris. Pour résoudre ce problème, double-cliquez sur le crayon et réalignez-le de sorte que l'extrémité du crayon se trouve sur le point d'alignement..


Étape 14: réception de la classe de document Create

Comme dans la première partie, enregistrez votre fichier FLA sous le nom Receiving.fla puis créez un fichier AS vierge. Enregistrez ce fichier dans le même dossier que votre fichier FLA et nommez-le. Recevoir..

Retournez ensuite et liez la classe de document à la FLA.


Étape 15: réception de la classe de document de configuration

Ajoutez un paquet vierge, une classe et une fonction constructeur à votre fichier AS.

 package public class Receiving étend MovieClip public function Receiving () 

Étape 16: Réception des classes d'importation

Comme avant, importez toutes les classes dont nous aurons besoin.

 package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.net.LocalConnection; Classe publique Réception étend MovieClip fonction publique Réception () 

Étape 17: Réception de l'utilisation de LocalConnection

Nous sommes maintenant prêts à commencer à écrire le code pour recevoir les informations de la connexion locale. Voici ce que nous devons faire:

  • Déclarer une instance de la classe.
  • Se connecter à la connexion locale.
  • Met le client pour la connexion locale.
  • Créer une méthode pour recevoir des données de la connexion locale.

Déclarer une instance de la classe de connexion locale est le même que précédemment:

 private var localConnection: LocalConnection = new LocalConnection ();

Ensuite, nous devons nous connecter à la connexion que nous avons créée lorsque nous avons envoyé les données de l'autre fichier..

 localConnection.connect ("_ connectionName");

Maintenant, nous définissons le client. Le client indique l'objet sur lequel les fonctions sont appelées. Il est normalement réglé sur ce.

 localConnection.client = this;

Enfin, nous devons créer une fonction vierge qui recevra les données à travers ses arguments.

 fonction publique methodName (variable1: type, variable2: type…): void ;

Étape 18: Réception de la déclaration de la connexion locale et de l'écriture de la fonction constructeur

Maintenant que nous savons comment recevoir des informations avec une connexion locale, nous pouvons commencer à écrire le script. Commencez par déclarer une nouvelle instance de LocalConnection. Placez ceci avant la fonction constructeur dans la classe.

 private var localConnection: LocalConnection = new LocalConnection ();

Ensuite, dans la fonction constructeur, connectez-vous à la connexion locale et définissez son client:

 fonction publique Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; 

(Notez que nous nous connectons à une connexion locale avec le même identifiant que celui utilisé dans le fichier d'envoi.)


Étape 19: Réception de la fonction processData ()

Lorsque des informations étaient envoyées à partir du fichier d'envoi, une fonction ou une méthode de réception était nommée. Dans ce projet, j'ai utilisé la fonction données de processus(). La fonction suivante reçoit le X et Y coordonnées comme arguments et les utilise ensuite pour définir la position du crayon.

 fonction publique processData (mX: Number, mY: Number) cursor_mc.x = mX; curseur_mc.y = mY; 

Cette fonction doit être un Publique fonctionne de manière à pouvoir y accéder via la connexion locale.


Étape 20: réception d'un événement d'état

Comme pour la section 1, comme nous utilisons une connexion locale, nous devrons gérer les événements d'état. L'événement a déjà été importé à l'étape 16, nous devons donc maintenant ajouter un écouteur d'événement pour les événements. Ajoutons une ligne à la fonction constructeur:

 fonction publique Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus); 

Ensuite, nous créons une fonction vierge pour répondre à l'écouteur d'événements:

 fonction privée onStatus (e: StatusEvent): void ;

Étape 21: Récapitulatif de réception

Dans cette seconde partie, nous avons reçu avec succès les informations d’une connexion locale et les avons traitées. Voici notre fichier AS fini:

 package import flash.display.MovieClip; import flash.events.Event; import flash.events.StatusEvent; import flash.net.LocalConnection; public class Réception s'étend à MovieClip private var localConnection: LocalConnection = new LocalConnection (); fonction publique Receiving () localConnection.connect ("_ mouseConnection"); localConnection.client = this; localConnection.addEventListener (StatusEvent.STATUS, onStatus);  fonction publique processData (mX: Number, mY: Number) cursor_mc.x = mX; curseur_mc.y = mY;  fonction privée onStatus (e: StatusEvent): void ; 

Conclusion

Dans ce tutoriel, nous avons appris à utiliser la classe LocalConnection. Vous avez vu comment envoyer et recevoir des informations et comment gérer les événements d'état. Cette méthode est souvent utilisée dans la publicité Web lorsqu'un annonceur souhaite synchroniser une annonce entre deux annonces différentes sur une même page Web. Ce même principe peut facilement être développé pour inclure des communications bidirectionnelles entre deux fichiers.

Merci d'avoir lu ce tutoriel; J'espère que tu as aimé!