Flash et Javascript pour Firefox

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13458
  • Loc: Florida
  • Status: Offline

Message Mars 2nd, 2007, 6:09 pm

Je ne peux pas pour la vie de me faire une animation Flash à répondre à Javascript dans Firefox 2.

Ive a essayé d'utiliser une variable dans _root
Code: [ Select ]
var myVar:Number;

Regarder cette variable
Code: [ Select ]
var callB:Function = function(prop, newval, oldval):Number {
  doSomthingWithNewval(parseInt(newval));
  return parseInt(newval);
}
this.watch("myVar", callB);
  1. var callB:Function = function(prop, newval, oldval):Number {
  2.   doSomthingWithNewval(parseInt(newval));
  3.   return parseInt(newval);
  4. }
  5. this.watch("myVar", callB);


Utilisation SetVariable dans JS
Code: [ Select ]
function getSWF(movieName) {
  if (navigator.appName.indexOf("Microsoft") != -1) {
    return window[movieName];
  }
  else {
    return document[movieName];
  }
}
getSWF('myMovie').setVariable('myVar', '0x123456');
  1. function getSWF(movieName) {
  2.   if (navigator.appName.indexOf("Microsoft") != -1) {
  3.     return window[movieName];
  4.   }
  5.   else {
  6.     return document[movieName];
  7.   }
  8. }
  9. getSWF('myMovie').setVariable('myVar', '0x123456');


Qui fonctionne dans Internet Explorer.

Ive a essayé d'utiliser "mx.external.ExternalInterface.addCallback"
Code: [ Select ]
var callB:Function = function(par):Void {
  // Stuff
}
ExternalInterface.addCallback("swfSetTheme", null, callB);
  1. var callB:Function = function(par):Void {
  2.   // Stuff
  3. }
  4. ExternalInterface.addCallback("swfSetTheme", null, callB);

Appeler la méthode recommandée avec JS
Code: [ Select ]
function getSWF(movieName) {
  if (navigator.appName.indexOf("Microsoft") != -1) {
    return window[movieName];
  }
  else {
    return document[movieName];
  }
}
getSWF('myMovie').swfSetTheme(myVar);
  1. function getSWF(movieName) {
  2.   if (navigator.appName.indexOf("Microsoft") != -1) {
  3.     return window[movieName];
  4.   }
  5.   else {
  6.     return document[movieName];
  7.   }
  8. }
  9. getSWF('myMovie').swfSetTheme(myVar);


Cela fonctionne avec Internet Explorer et Opera.

Im en utilisant "AC_FL_RunContent" pour afficher le SWF, heres à quoi ça ressemble.
Notez l'utilisation de "allowScriptAccess" & "swLiveConnect".
Code: [ Select ]
AC_FL_RunContent('id','myMovie', 'name','myMovie', 'src','/portal/e107_themes/Tech9/tech9', 'movie','/portal/e107_themes/Tech9/tech9', 'width','600', 'height','180', 'allowScriptAccess','sameDomain', 'swLiveConnect','true', 'quality','high', 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0','pluginspage','http://www.macromedia.com/go/getflashplayer');


L'appel "méthode" de "ExternalInterface" fonctionne sans problème dans Firefox, je peux télécharger Flash pour appeler une méthode JS et recevoir une valeur de retour sans problème.

Je n'ai pas été en mesure d'obtenir JS parler à Flash mais, même si elle ne veut pas une valeur en retour.

Tout cela a à voir avec la synchronisation de la colorschemes entre le SWF & HTML / CSS.
Lorsque le film démarre, il utilise des «ExternalInterface.call» pour lire le même cookie & s'ériger comme JS lit à lui-même mis en place.
JS est utilisé pour changer le colorschemes à l'exécution, donc j'ai besoin d'être en mesure d'avoir JS parler à Flash.
Strong with this one, the sudo is.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mars 2nd, 2007, 6:09 pm

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13458
  • Loc: Florida
  • Status: Offline

Message Mars 2nd, 2007, 7:51 pm

S'avère que la question n'était pas Flash du tout.

La méthode utilisée pour obtenir le SWF avec JS est de renvoyer une nodeList avec l'objet et EMBED dans Firefox, au lieu d'un objet scriptable unique comme c'est le cas dans les autres navigateurs.

Heres ce qui Im utiliser pour obtenir une référence au fichier SWF dans JS maintenant.
Le premier élément de la nodeList est l'objet, le second est le EMBED, qui est ce que Firefox est recherchez.
Code: [ Select ]
function getSWF(movieName) {
  if (navigator.appName.indexOf("Microsoft") != -1) {
    return window[movieName];
  }
  else {
        if(document[movieName].length != undefined){
             return document[movieName][1];
        }
    return document[movieName];
  }
}
  1. function getSWF(movieName) {
  2.   if (navigator.appName.indexOf("Microsoft") != -1) {
  3.     return window[movieName];
  4.   }
  5.   else {
  6.         if(document[movieName].length != undefined){
  7.              return document[movieName][1];
  8.         }
  9.     return document[movieName];
  10.   }
  11. }
Strong with this one, the sudo is.
  • atrejoe
  • Born
  • Born
  • No Avatar
  • Inscription: Juin 17, 2007
  • Messages: 2
  • Status: Offline

Message Juin 17th, 2007, 11:12 am

Bit d'une réponse tardive, mais j'ai une question supplémentaire.

J'ai eu le même problème tout en accédant à javascript activé Flash via JavaScript dans Firefox.

Votre explication clarifié ma déblayage-point en JavaScript, donc maintenant Im sûr que je peux accéder au flash-film lui-même dans Firefox, mais je ne pouvais pas appeler la méthode ActionScript dans Flash.

J'ai fait la méthode de la disposition du public en utilisant:
Code: [ Select ]
flash.external.ExternalInterface.addCallback("methodName", instance, method);


Cela fonctionne dans la plupart des navigateurs (Microsoft Internet Explorer, Opera et Safari), sauf pour Firefox. Quand je flash disable-activation par l'affichage des animation flash normalement, il fonctionne dans tous les navigateurs. Les deux méthodes indiquent que le paramètre désigne le type même de l'objet:

Code: [ Select ]
HTMLEmbedElement


Avez-vous ressenti la même chose? La méthode en ActionScript est un simple «vide» la méthode, en tenant trois chaînes comme arguments.
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13458
  • Loc: Florida
  • Status: Offline

Message Juin 17th, 2007, 4:21 pm

Seul problème que j'ai eu avec Firefox est une me demandant de vérifier un ensemble de retour avec la JS, si vous rencontrez des éléments retournés HTMLEmbed je n'ai pas idée de ce que ça pourrait être bon maintenant. :scratchhead:

Id-dire swLiveConnect ou allowScriptAccess, mais les films, j'ai utilisé avant dans ce fil ne sont pas en utilisant thoose paramètres et ils fonctionnent correctement dans chaque navigateur.
Strong with this one, the sudo is.
  • atrejoe
  • Born
  • Born
  • No Avatar
  • Inscription: Juin 17, 2007
  • Messages: 2
  • Status: Offline

Message Juin 18th, 2007, 12:27 am

Merci de votre réponse.

Pour l'instant, il ne semble pas se tromper lors de l'appel de la fonction de Body.onload.

À ce moment, le fichier flash n'a pas été complètement initialisé. Cela semble être une question à double sens. Tout d'abord, le chargement de la source de la balise embed ne retarde pas le cas body.onload (uniquement dans Firefox), bien qu'il le devrait.
Ensuite, Im exécution de script inter-cadres, il semblerait donc plus difficile d'ajuster le calendrier.

I guess Ill suffit d'être très prudent tout en appelant les méthodes actionscript.

Afficher de l'information

  • Total des messages de ce sujet: 5 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 41 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC