2

JavaScriptとActionScriptの両方で非常に新しいです。私は、ActionScriptで関数を呼び出し、返された配列を格納するjavascriptを取得しようとしています。私はどこにでも助けを求めてきました。私はこのことを働かせるようです。ExternalInterfaceを使用して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内の関数を呼び出して、あまりにも動作します:私のActionScriptは以下の通りです。しかし、私はしようとするときに、それはdosent仕事をjavascriptでgetFontsメソッドを呼び出します。 Relavent Javascriptは次のとおりです:

function getFlashMovie(movieName) { 
    var isIE = navigator.appName.indexOf("Microsoft") != -1; 
    return (isIE) ? window[movieName] : document[movieName]; 
} 

var fontArray = getFlashMovie("FontList.swf").getFonts(); 

私はここに何かが欠けていますか?

答えて

3

Actionscript関数getDeviceFonts()が配列を返す場合、コードはそのまま動作し、JavaScriptのfontArrayには同じ値が含まれます。

swfファイルがロードされ準備が整うまで、ActionScript関数を呼び出すことはできません。たとえば、SWF読み込み時にvar fontArray = getFlashMovie("FontList.swf").getFonts();を直接ロードすることはできません。まだロードされていないので、getFonts()はまだ定義されていません。

しかし、は、引数として配列をとるJavaScript関数populateFontsListがあればうまくいくはずです。 swfがロードされ、ActionScriptが実行されるとすぐに、そのJavaScript関数を呼び出す必要があります。

関連する問題