À l'aide d'ExternalInterface en Flash
Je suis en train de modifier certains flash pour faire un javascript externe de l'appel de fonction, mais sans succès. Voici mon code actionscript 2.0:
//testing external .js calls
import flash.external.ExternalInterface;
//attempting to make external js call
ExternalInterface.call("createPlaylist","It's my Life!");
et voici mon javascript;
function createPlaylist(mess){
alert("called createPlaylist: " + mess);
}
J'ai vu beaucoup d'exemples et je suis principalement confus au sujet de l'utilisation de ExternalInterface.addCallback
. Je n'ai pas besoin de javascript pour retourner tout de flash, donc est-ce nécessaire?
Pour quelque raison que ce soit, je ne vois jamais l'alerte. Personne ne vois aucun problème dans mon code? Est-il un ExternalInterface
bibliothèque je n'ai pas? Aussi, quelle est la MEILLEURE façon d'utiliser ExternalInterface
(c'est à dire; la vérification des erreurs, etc.) Merci à l'avance...
OriginalL'auteur danwoods | 2009-05-03
Vous devez vous connecter pour publier un commentaire.
ExternalInterface.addCallback est pour le javascript pour pouvoir l'appeler dans votre application Flash. Si par exemple vous voulez un bouton HTML qui démarre/arrête la vidéo que vous venez d'ajouter un rappel pour un nom de méthode et votre js peut appeler [FlashObject].rappel du nom de la méthode.
Je dirais que la meilleure façon d'ajouter de la ExternalInterface méthodes dans votre application est de mettre en place une classe responsable de la JS communication pour chaque interaction de cas dans l'application. Par exemple:
Pour tester ExternalInterface plus directement, essayez d'appeler
Essayez de retracer le ExternalInterface.propriétés disponibles. Il vous indique si le flash est en cours d'exécution dans un conteneur permettant ExtInt appels. Lire @ plus livedocs.adobe.com/flex/2/langref/flash/external/...
avec quelque chose comme ça? //test externe .js appels d'import flash.externe.ExternalInterface; //interface externe disponible? var isAvailable:Boolean = ExternalInterface.disponible; trace(isAvailable); Que dois-je être à la recherche pour lorsque je l'exécute?
Désolé, peux pas comprendre comment le code postal. Quelqu'un peut-il lire?
En supposant qu'elle est dans un récipient, comment pourrais-je contourner cela?
OriginalL'auteur Johan Öbrink
Que d'autres ont dit dans les commentaires du post de Johan, vous devriez d'abord vérifier si l'Interface Externe est disponible en vérifiant ExternalInterface.disponible.
Autre que... comment voulez-vous lancer l'Application Flex? D'abord, il doit être inclus dans une enveloppe qui contient ce JavaScript bien sûr. C'est trivial. Cependant dans le cas où vous le lancez en tant que fichier dans le système de fichiers local (adresse URL du navigateur commence par file://) ensuite, vous devez également vous assurer que le fichier SWF a les autorisations nécessaires pour exécuter une fonction JavaScript.
Vous devez faire confiance au fichier SWF à lui permettre d'accéder à des ressources locales comme pour les fichiers, ou JS sur des fichiers locaux. Pour ce faire, créez un fichier comme myapp.cfg et ajouter le chemin d'accès à votre fichier sur une seule ligne, à cette ligne. Placez ce fichier dans le FlashPLayerTrust dossier. Sur les systèmes Linux, c'est ~/.macromedia/Flash_Player/#Sécurité/FlashPlayerTrust/.
OriginalL'auteur Yaba