7

B.swf をムービークリップにロードする A.swf があり、それにいくつかの FlashVar を渡す必要があります。B.swf を html でロードすると、FlashVars を問題なく渡すことができます。A.swf から渡すと、

エラー #2044: 未処理の ioError:。text=エラー #2032: ストリーム エラー。URL: ファイル:

A.swf のコードは

var request:URLRequest = new URLRequest ("B.swf");

var variables : URLVariables = new URLVariables();
variables.xml = "test.xml";

// This line causes the error 2044, else B.swf loads fine with FlashVars  
request.data = variables;

loader.load (request); 

B.swf では、このように Flashvars をチェックしています。HTML側からは正常に動作します

this.loaderInfo.parameters.xml
4

4 に答える 4

17

querystringメソッドはローカルで正常に機能するはずですが、Flash Player 10.2を使用している場合は、このための新しいAPIがあります。

var context:LoaderContext = new LoaderContext();
context.parameters = {'xml': 'test.xml'};
loader.load(request, context);

ドキュメントはここにあります:http: //help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/LoaderContext.html#parameters

于 2011-03-19T21:07:45.833 に答える
2

「A」が「B」に FlashVars を渡す必要はありません。B が FlashVars 自体にアクセスできるようにするだけです。以下は、B が A の内部にあるか、トップレベル自体にあるかに関係なく機能します。

B のコンストラクターに ADDED_TO_STAGE イベント リスナーを追加します。例えば:

function B(){
    this.addEventListener(Event.AddedToStage, onAddedToStageHandler);
}

ステージにアクセスできるようになったら、次の方法で A の FlashVars にアクセスできます。

myVarB.swf で flashVarという変数を適切に表示するには、(B 内で) 次のようにします。

private function onAddedToStageHandler(){
var flashVars : Object = LoaderInfo(this.stage.loaderInfo).parameters;
// now you have access to your flashVars!
trace(flashVars.myVar);
}

stage.loaderInfoあなたが見る必要があるものです。

于 2011-10-17T16:45:55.330 に答える
0

アクセス許可をサンドボックス化するにはどうすればよいですか? 設定からフォルダを追加しようとしましたが、それもうまくいきませんでした。

http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html#117502

シンプルな新しいプロジェクトを作成しました。これは完全なコードです。

var mc:MovieClip = new MovieClip ();

var loader:Loader = new Loader ();
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, OnComplete);

var request:URLRequest = new URLRequest ("B.swf"); 

var variables : URLVariables = new URLVariables(); 
variables.xml = "test2.xml"; 

// This line causes the error 2044, if i comment out, it runs fine without FlashVars   
request.data = variables; 

loader.load (request);  


function OnComplete (e:Event)
{
    trace ("On Complete");
    mc = e.currentTarget.content as MovieClip;
    addChild (mc);
}
于 2010-02-22T08:37:58.487 に答える
0

読み込み時にフラッシュ変数をURIに追加できます

URLRequest(String("B.swf" + "?myvar=45"));

問題は、uri に文字列をロードすると、オブジェクト内に配置されるloaderInfo.parametersため、これらのパラメーターを渡したい場合は、これらを渡すための文字列を作成する必要があることです。

これはhttp://ragona.com/blog/pass-flashvars-loaded-swf/のスクリプトで、これを再び文字列配列に変換する方法を示しています

//:: Store loader info
var lInfo:Object = this.root.loaderInfo.parameters;
//:: Flashvars
var fVars:String = "?whee=nada"; //:: Getting the syntax change (? --> &) out of the way with a dummy var

//:: Set path + data
for (var flashVar in lInfo)
{
    fVars += "&" + flashVar + "=" + lInfo[flashVar];
}

var myRequest:URLRequest = new URLRequest(String("/myPath.swf" + fVars));
于 2010-02-20T16:31:52.420 に答える