Как получить эту функцию в ActionScript для возврата массива в JavaScript с помощью ExternalInterface
Я очень плохо знаком с JavaScript и ActionScript. Я пытаюсь получить JavaScript для вызова функции в ActionScript и сохранить возвращенный массив. Я везде искал помощи, и я не могу заставить ее работать. Мой Actionscript ниже:
import flash.display.Sprite;
import flash.text.Font;
import flash.text.FontType;
import flash.text.FontStyle;
import flash.external.*;
public class FontList extends Sprite
{
public function FontList()
{
ExternalInterface.call('populateFontsList', getDeviceFonts());
ExternalInterface.addCallback('getFonts', getDeviceFonts);
}
Есть метод getDeviceFonts(), который работает, и функция.call тоже работает, вызывая функцию в javascript. Тем не менее, когда я пытаюсь вызвать метод getFonts в JavaScript, это не работает. Релавент Javascript, как показано ниже:
function getFlashMovie(movieName) {
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName];
}
var fontArray = getFlashMovie("FontList.swf").getFonts();
Я что-то здесь упускаю?
1 ответ
Если функция Actionscript getDeviceFonts()
возвращает массив, ваш код должен работать как есть, а fontArray
в JavaScript будет содержать те же значения.
Однако следует иметь в виду, что вы не можете вызывать функцию ActionScript до тех пор, пока файл swf не будет загружен и готов, поэтому, например, вы не можете сделать var fontArray = getFlashMovie("FontList.swf").getFonts();
непосредственно при загрузке страницы, поскольку swf еще не будет загружен, и, следовательно, getFonts() еще не будет определен.
Но я думаю ExternalInterface.call('populateFontsList', getDeviceFonts());
должно работать, если у вас есть функция JavaScript populateFontsList
который принимает массив в качестве аргумента. Эта функция JavaScript должна вызываться, как только SWF-файл загружен и ActionScript выполнен.