Как получить эту функцию в ActionScript для возврата массива в JavaScript с помощью ExternalInterface - PullRequest
2 голосов
/ 17 декабря 2011

Я очень плохо знаком с JavaScript и ActionScript. Я пытаюсь получить JavaScript для вызова функции в 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 Ответ

3 голосов
/ 17 декабря 2011

Если функция Actionscript getDeviceFonts() возвращает массив, ваш код должен работать как есть, а fontArray в JavaScript будет содержать те же значения.

Однако следует иметь в виду, что вы не можете вызывать функцию ActionScript до тех пор, пока SWF-файл не будет загружен и готов, поэтому, например, вы не можете выполнить var fontArray = getFlashMovie("FontList.swf").getFonts(); непосредственно при загрузке страницы, поскольку SWF-файл пока не будет загружен, и, следовательно, getFonts () еще не будет определен.

Но я думаю, ExternalInterface.call('populateFontsList', getDeviceFonts()); должно работать, если у вас есть функция JavaScript populateFontsList, которая принимает массив в качестве аргумента. Эта функция JavaScript должна вызываться, как только SWF-файл загружен и код ActionScript выполнен.

...