0

そこで、古い as2 アニメーションや新しいものなど、さまざまな swf ファイルを含むプレイリストを作成しました。それらをローカル フォルダーにダウンロードし、フルスクリーンで再生できます。すべて 1 つの AIR (actionscript) アプリケーションで。これで、新しいファイルに ExternalInterface.Call(いくつかの引数) 呼び出しがあることがわかりました。そして、それらをホスティング AIR アプリケーションで処理する必要があります。これまでのところ、次のコンストラクタを持つ MovieClip から継承されたクラスがあります。

public function FlashClip()
    {
        ExternalInterface.addCallback("FlashPlayerControl1FlashCall",FlashPlayerControl1FlashCall);
    }

アプリケーションを実行すると、次のエラーが発生しました。

エラー: エラー #2067: このコンテナでは ExternalInterface を使用できません。ExternalInterface には、Internet Explorer ActiveX、Firefox、Mozilla 1.7.5 以降、または NPRuntime をサポートするその他のブラウザーが必要です。Error$/throwError() at flash.external::ExternalInterface$/addCallback() at Video::FlashClip()[C:\Users\Daan\Adobe Flash Builder 4.6\TINS-v2-1\TINSV2\src\Video \FlashClip.as:12] ビデオ::FlashPlayer/BestandOpend()[C:\Users\Daan\Adobe Flash Builder 4.6\TINS-v2-1\TINSV2\src\Video\FlashPlayer.as:43]

次の行:(FlashPlayer.as:43)

   var clip:FlashClip = new FlashClip();

だから、私の質問はこれです。私たちがやろうとしていることは可能です。それとも、actionscript AIR アプリケーションに JavaScript コンテナーを埋め込む必要がありますか? または、これを機能させる方法を知っている人はいますか?? 注: 既存の swf ファイルを変更することはできません。オリジナルの .fla すらありません

4

1 に答える 1

1

ドキュメントには、あなたがやろうとしていることは不可能であると書かれています:

Adobe AIR では、このExternalInterfaceクラスを使用して、HTMLLoaderコントロールにロードされた HTML ページ内の JavaScript と、その HTML ページに埋め込まれた SWF コンテンツ内の ActionScript との間で通信できます。

機能するにはExternalInterface、ブラウザが提供する Javascript「レイヤー」と通信する必要があります。SWF コンテンツが埋め込まれた HTML ページをロードしない限り、AIR でこの機能を利用することはできません。

これを可能にするHTMLLoaderのドキュメントにリンクしました。

[編集]

Web ページをロードする単純な AIR アプリ (Flex 3.6 であることに注意してください。申し訳ありませんが、私のクライアントが使用しているものです) を追加します。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
                        layout="absolute"
                        width="800" height="600"
                        creationComplete="onCreationComplete()">

    <mx:Script>
        <![CDATA[
            import mx.core.UIComponent;

            private function onCreationComplete():void
            {
                var loader:HTMLLoader = new HTMLLoader();
                var request:URLRequest = new URLRequest("http://www.adobe.com");
                loader.width = 800;
                loader.height = 600;
                loader.load(request);
                var uic:UIComponent = new UIComponent();
                uic.addChild(loader);
                addChild(uic);
            }
        ]]>
    </mx:Script>
</mx:WindowedApplication>
于 2012-10-19T16:55:26.117 に答える