Проблема с внешним интерфейсом Flash JSFL
-
18-09-2019 - |
Вопрос
Я не могу получить вызов от JSFL к SWFPanel для работы через ExternalInterface API.Я следую инструкциям здесь следующим образом:
На панели SWF, в сцене 1 действие 1, я регистрирую функцию обратного вызова с помощью ExternalInterface:
ExternalInterface.addCallback("appendTrace", this, appendTrace);
function appendTrace(traceString:String):Void {
trace("appendTrace");
traceBox.text = traceBox.text + traceString;
}
Затем в моем JSFL я перебираю swf-панели, чтобы найти swf-панель, а затем вызываю метод appendTrace следующим образом:
appendTrace("Received trace");
fl.trace("got here");
function appendTrace(traceString) {
var panels = fl.swfPanels;
var myPanel;
for (var i = 0; i < panels.length; i++) {
if (panels[i].name == 'MyPanel') {
myPanel = panels[i];
break;
}
}
if (myPanel) {
myPanel.call("appendTrace", traceString);
} else {
fl.trace("Can't find Panel. Is it installed?");
}
}
Линия myPanel.call("appendTrace", traceString);
вызывается, но ничего не отслеживается, не добавляется и ошибка не выдается, поэтому кажется, что ExternalInterface не вызывает метод appendTrace.Кажется, что все настроено правильно, но я попробовал несколько вещей, и это не работает.Каковы некоторые общие недостатки при таком подходе?
Решение
Проблема заключалась в том, что я использовал AS2 вместо AS3.Вышеупомянутая SWF-панель<-> Для связи JSFL требуются SWF-панели AS3.Как только я переключился на AS3, это сработало.