2009-03-27 10 views
1

Ich versuche, eine Funktion mit ExternalInterface in einem Flash-SWF mit JavaScript aufgerufen. Es hat einmal funktioniert, aber auf einmal hörte es auf zu arbeiten.Aufruf eines Flash ExternalInterface mit JavaScript

Ich habe eine Debug-Version des Flash Player, aber keine Fehler in Flash auftreten. Nicht einmal ein "Sicherheits-Sandbox-Fehler" oder so. Der einzige Fehler, den ich bekomme, ist der folgende Fehler in JavaScript Error: Error in Actionscript. Use a try/catch block to find error.

Ich benutze AS3, exportieren für Flash Player 10 und testen auf Firefox 3/Safari 4, auf einem Mac.

Jede Hilfe wäre sehr willkommen.

Antwort

4

Etwas schwierig, um Ihnen zu helfen, etwas zu lösen, das 'einmal funktioniert'. Aber mit ExternalInterface ist ziemlich einfach - hier ist was ich tue:

in AS3: so etwas wie

... 
if (ExternalInterface.available) ExternalInterface.addCallback("search", jsSearch); 
... 
private function jsSearch(term:String):void 
{ 
    new Search(data); 
} 

in JS: so etwas wie

... 
var term = $('input#search').val(); 
$("#swfobject").get(0).search(term); 
.... 
0
  • Sicherstellen, dass die Javascript und die SWF sind auf den gleichen Domänen sonst verwenden, um eine crossdomain.xml
  • Stellen Sie sicher, dass die allowScriptAccess Parameter in den Flash einbetten
  • hinzugefügt haben, wenn Sie es ausführen lokal können Sie (aber denken Sie nicht, dass es etwas ändern wird) den Speicherort vertrauenswürdigen Flash-Playern hinzufügen (im Sicherheitsbereich).
0

in Ihrem als

import flash.external.*; 
ExternalInterface.call("return_me_some_value()"); 

und in Ihrem HTML

<script> 
var super_var = 'something'; 

function return_me_some_value() { 
    return super_var; 
} 
</script> 
Verwandte Themen