ExternalInterface.addCallback für as3 funktioniert nicht
Möchte ich nennen, ALS Funktion von JS.
Habe ich den folgenden ActionScript-3-code:
package {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.external.ExternalInterface;
public class Main extends Sprite {
public function Main()
{
ExternalInterface.addCallback("PlaySound", PlaySound);
}
public function PlaySound():void
{
}
}
}
Muss ich anrufen Funktion PlaySound() aus dem JavaScript. Ich versuche es auf die folgende Weise:
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
function m()
{
var obj=thisMovie("Main");
obj.PlaySound();
}
Aber obj hat keine Methode PlaySound() (obj nicht null ist).
Was ist falsch?
- Aber obj hat keine Methode PlaySound() (obj nicht null ist). -> Was bedeutet es? Haben Sie versucht, zu verfolgen, etwas in Ihrem as3 PlaySound-Methode?
- Es bedeutet, dass JavaScript-Objekt obj hat noch nicht die Methode PlaySound. Aber obj nicht null - so, function thisMovie korrekt ist. Ich habe die Lösung gefunden, siehe nächste Antwort. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hier nach dem Film. Es scheint mehr zuverlässig:
Habe ich auch herausgefunden, dass ExternalInterface funktioniert nicht richtig, wenn ausgeführt von einem lokalen Dateisystem. Haben Sie versucht, läuft diese auf einem webserver?
Es ist auch möglich, dass Sie sehen, dass eine race condition... vielleicht sind Sie versuchen zu rufen PlaySound, bevor es registriert wurde, als ein Rückruf. Was passiert, wenn Sie ein wenig warten, bevor Sie den Anruf?
Ich denke, das problem ist, dass die SWF-Datei nicht geladen, aber wenn Sie versuchen, rufen Sie es von JS.