2010-11-08 4 views
0

Je voudrais savoir s'il est possible de déclencher une fonction jquery pour cacher quelque chose après un événement souris en flash.Trigger jquery avec flash

Je veux que cela fonctionne quand quelque chose est cliqué en flash:

$("#googframe").click(function() { 
    $("#googframe").hide(); 
    }); 

je sais comment suivre un clic dans AS3, mais comment puis-je pour déclencher cela. D'ailleurs je suis très basique donc une bonne explication est très appréciée.

Merci.

Répondre

2

A partir de cette source: http://codingrecipes.com/calling-a-javascript-function-from-actionscript-3-flash

essayer en Actionscript:

import flash.external.ExternalInterface; 

... 

ExternalInterface.call("hideFrame"); 

et mettre votre fonction cache dans une fonction régulière JS:

function hideFrame() { 
    $("#googframe").hide(); 
} 
+0

cela ne fonctionne pas. mais je pense que c'est la fonction parce que quand je suis entré "javascript: hideFlash();" dans la barre d'adresse rien ne se passe aussi bien – DonJuma

+0

okay la fonction fonctionne maintenant mais la façon dont vous l'appelez ne fait rien – DonJuma

+0

pourrait-il être parce que l'AS3 se charge en premier? – DonJuma

0

En appel flash quand vous avez besoin à:

 
      url = "javascript:hideFlash();"; 
      request = new URLRequest(url); 
      try 
      { 
       navigateToURL(request, "_top"); 
      } 
      catch (e:Error) 
      { 
       trace("Error occurred!"); 
      } 

puis créez votre fonction JS appelée hideFlash();

1

Comme dit @Fosco, utilisez ExternalInterface, mais la syntaxe doit être la suivante:

AS2/AS3:

import flash.external.ExternalInterface; 
ExternalInterface.call('myJsFunction'[, args...]) 

en Javascript:

function myJsFunction() { 
    ... 
} 

Le reste du les arguments après le premier sont les paramètres de la fonction qui sera appelée (liste de paramètres, varargs, etc).

Ainsi, à titre d'exemple:

AS2/AS3:

ExternalInterface.call('addIntegers', 1, 2); 

JS:

function addIntegers(a, b) { 
    doSomethingWith(a + b); 
    // etc. 
} 
+0

Deux notes à ce sujet. IE7 et éventuellement 6 doivent avoir l'ID défini sur l'objet pour faire ce travail. Vous devrez peut-être forcer avec allowScriptAccess si l'appel lance une exception (vous devriez toujours mettre des appels EI dans un try/catch). – mpdonadio

+0

En effet, des mises en garde importantes. Merci d'avoir ajouté ceux-ci. Aussi, comme une autre note: avoir à utiliser des identifiants HTML et à configurer 'allowScriptAccess' ne devrait pas vous décourager d'utiliser cette méthode; C'est la bonne façon de communiquer entre AS et JS. – mway

+0

AS3 JS auditeurs d'événements mis à part, c'est. – mway