5

Flash SWF (AS3、プレーヤー v9) をロードする Flex 3 アプリ (プレーヤー v9) があり、実行時に既知のパラメーターのコレクションを動的に渡す必要があります。これらは、通常flashvars、HTML ページの要素を介して渡されるパラメーターです。埋め込まれたムービーは、オブジェクトを介してこれらのパラメーターにアクセスしloaderInfo.parametersます。

私はパラメータを渡すのに成功しなかったクラスを使用しようSWFLoaderとしました。Loader

関連する詳細:

  • これはローカル プログラムであり、クエリ文字列パラメーターに依存することはできません。
  • 埋め込みコードから設定をいじりましloaderInfo.parameters["foo"] = "123"たが、埋め込みムービーにパラメーターが巻き上げられることはありません。
  • サードパーティによって作成されているため、埋め込まれたムービーに追加のパラメーター受け渡し機構を配置することはできません。
4

4 に答える 4

9

このパラメーターを URL で渡すことは役に立ちません。なぜなら、それらは html-wrapper で JavaScript コードを使用して取得されるからです。「flashVars」パラメーターは Application.application.parameters を使用して取得されるため、これらのパラメーターを手動で設定する必要があります。

SWFLoader を使用して別のアプリをロードする場合は、ロードされたアプリケーションを表し、必要なものをすべて適用するオブジェクトを作成する必要があります。

<mx:Script>
    <![CDATA[
        import mx.managers.SystemManager;
        import mx.controls.Alert;
        import mx.events.FlexEvent;

        private var loadedApp:Application;

        private function onLoadComplete(event:Event):void {
            var smAppLoaded:SystemManager = SystemManager(event.target.content);
            smAppLoaded.addEventListener(FlexEvent.APPLICATION_COMPLETE, onLoadedAppComplete);
        }

        private function onLoadedAppComplete(event:FlexEvent):void {
            try {
                loadedApp = Application(event.target.application);
                if(!loadedApp) throw new Error();

                loadedApp.parameters["param1"] = "value1";
            } catch (e:Error) {
                Alert.show("Failed to get application loaded.", "Error", Alert.OK); 
            }
        }

        private function onLoadError():void {
            Alert.show("Failed to load an application.", "Error", Alert.OK);
        }

    ]]>
</mx:Script>

<mx:SWFLoader 
    width="100%" height="100%"
    source="./AppToLoad.swf" 
    complete="onLoadComplete(event)" 
    ioError="onLoadError()" securityError="onLoadError()" />

于 2009-01-15T17:40:05.937 に答える
1

理由は簡単です。今日、これを発見しました。

SWFloaderhasparentApplicationまたはset を介してロードされたコンポーネントAplication.applicationで、最上位アプリケーションに設定されます (このウィッチは、SWFLoader を介してコンポーネントをロードします)。ロードされたコンポーネントはflashvars、最上位アプリケーションに設定されていることがわかります。でパラメータを設定SWFLoaderしても影響がないのは、おそらくこれが原因です。

トップレベル アプリケーションに適切な flashvars を設定しましたが、それらはロードされたものにも表示されます :-)。

于 2010-11-24T12:37:04.197 に答える
0

Web ページに SWF を埋め込む場合、Flashvars を URL のパラメーターとして SWF に渡すことができます。SWF が にある場合は、file:///some/path/to/a.swfを使用してみてくださいfile:///some/path/to/a.swf?hello=world&foo=bar。それはうまくいくかもしれません。

于 2009-01-03T10:25:53.097 に答える
0

この答えを最初に見つけていたら、今日は多くの時間を節約できたでしょう: AS3 Pass FlashVars to loaded swf .

基本的に: Flash Player 10.2 以降、LoaderContext のパラメーターとして設定することで、flashvar を渡すことが可能になりました。

于 2015-06-13T01:28:34.490 に答える