2009-07-31 6 views
2

J'ai deux films flash communiquant les uns avec les autres en utilisant localConnection, passant un objet de swfA à swfB. Cela semble fonctionner, mais échouera occasionnellement. La seule information que nous avons est que l'événement d'état est déclenché avec un niveau de error, il n'y a pas d'autres informations. Une fois la connexion échouée, elle continuera à le faire. Je ne sais pas pourquoi ça se passe mais ce n'est pas un problème de sécurité (les deux films tournent sur le même domaine) et toute la communication est enveloppée dans un try..catch.LocalConnection dans Flash Player échoue-t-il parfois?

Est-ce que quelqu'un a déjà vu cela ou quelqu'un peut-il suggérer une méthode alternative pour communiquer entre les films? J'ai essayé d'utiliser ExternalInterface mais c'est trop lent pour le nombre de mises à jour qui sont envoyées.

+0

Ils échouent. Comme Sean le mentionne plus bas, c'est souvent à cause de conflits de noms ... Mais il y a aussi d'autres cas. Ils «travaillent», mais ils ne sont certainement pas fiables. :( – Gabriel

Répondre

0

LocalConnection est folle. Il traverse votre ordinateur et communique avec des clips à l'échelle mondiale. Cela signifie qu'ils n'ont même pas besoin d'être sur la même longueur d'onde. Par exemple, si une application aérienne est en cours d'exécution, vous pouvez communiquer avec celle basée sur un navigateur. Rappelez-vous simplement que les identifiants sont globaux, et qu'ils vont erreur s'ils sont en conflit. J'ai eu ceci se produire quand j'ouvre le même swf deux fois (parce qu'il écoute sur le même id). Cela arrive même s'ils sont sur des pages séparées.

Une autre option consiste à demander à vos swfs d'interroger le serveur et de communiquer via la base de données. Je ne sais pas si cela aide du tout. J'essaie d'éviter LocalConnection quand je peux :)

1

Nous semblons avoir résolu le problème, mais nous ne savons pas exactement pourquoi (nous avons simplement réduit considérablement le nombre de défaillances). Nous avons mis en place les éléments suivants:

  • réduit le nombre de localConnections en déplaçant tout à externalInterface où la vitesse était pas un problème
  • généré un identifiant unique au monde pour chaque film en ajoutant un horodatage à chaque fois que la page est actualisée (plutôt que de réutiliser le même identifiant). Cela a semblé réduire considérablement l'occurrence des échecs (bien qu'ils aient toujours eu lieu)
  • Ajout de '_' à l'ID de LocalConnection (voir les documents pour la raison). Je ne sais pas si cela a aidé mais semble une bonne pratique.
  • Forcer une reconnexion chaque fois qu'un échec se produit. Encore une fois, une bonne chose à mettre en œuvre pour améliorer la robustesse, mais puisque aucun échec ne se produit maintenant, ce n'est pas responsable de la correction directe du bug.

Donc, pas de solution définitive, il semble juste ensemble ces résolu le problème.

0

J'ai juste eu le même problème. Ma solution consiste à définir une minuterie qui essaie de se reconnecter à la connexion jusqu'à ce qu'elle soit trouvée. Minuterie très simple avec une fonction qui définit le e.target.stop() si la connexion réussit.

Questions connexes