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..
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.
Tout d'abord, créez un nouveau fichier ActionScript 3.0..
Ensuite, redimensionnez le fichier à 600px × 250px.
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.
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.
Ajoutez un paquet vierge, une classe et une fonction constructeur à votre fichier AS.
package public class Sending étend MovieClip public function Sending ()
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 ()
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 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!
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);
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)
.
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 ;
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 ;
Tout d'abord, créez un nouveau fichier ActionScript 3.0..
Ensuite, redimensionnez le fichier à 600px × 250px.
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.
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..
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.
Ajoutez un paquet vierge, une classe et une fonction constructeur à votre fichier AS.
package public class Receiving étend MovieClip public function Receiving ()
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 ()
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 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 ;
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.)
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.
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 ;
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 ;
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é!