要求データを Flex アプリケーションに渡すには、ラッパーで flashVars プロパティを定義します。BrowserManager を使用して URL フラグメントにアクセスすることもできます。詳細については、URL フラグメントを使用した要求データの受け渡しを参照してください。
flashVars プロパティおよび URL フラグメントは、実行時に Flex アプリケーションに読み込まれます。このため、flashVars プロパティまたは URL フラグメントを変更しても、Flex アプリケーションを再コンパイルする必要はありません。
ラッパーの <object> および <embed> タグの flashVars プロパティを使用して、Flex アプリケーションに変数を渡すことができます。このためには、これらのプロパティに、アンパサンドで区切られた名前と値のペアを追加します。
次の例では、単純なラッパー内の <object> および <embed> タグの内部で flashVars プロパティの firstname および lastname の値を設定します。
<html>
<head>
<title>/flex2/code/wrapper/SimplestFlashVarTestWrapper.html</title>
<style>
body { margin: 0px;
overflow:hidden }
</style>
</head>
<body scroll='no'>
<table width='100%' height='100%' cellspacing='0' cellpadding='0'><tr><td valign='top'>
<h1>Simplest FlashVarTest Wrapper</h1>
<object id='mySwf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab' height='100%' width='100%'>
<param name='src' value='FlashVarTest.swf'/>
<param name='flashVars' value='firstName=Nick&lastName=Danger'/>
<embed name='mySwf' src='FlashVarTest.swf' pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%' flashVars='firstName=Nick&lastName=Danger'/>
</object>
</td></tr></table>
</body>
</html>
Web 層コンパイラ、Adobe® Flex™ Builder™ または /templates ディレクトリに含まれるラッパーの 1 つによって生成されたラッパーを使用する場合、ラッパーは上記の例と大幅に異なる可能性があります。これらのラッパーは、AC_OETags.js ファイルの関数を呼び出して、HTML ページの <object> および <embed> タグ構造を作成します。この結果、flashVars がラッパーの AC_FL_RunContent() 関数にパラメータとして渡されます。flashVars パラメータが既に含まれている関数呼び出しの場合、次の例に示すように、flashVars を末尾に追加できます。
"FlashVars","MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+'&myName=Danger&myHometown=Los%20Angeles'+"",
flashVars 変数が関数のパラメータにまだ含まれていない場合、次の例に示すように、変数をリストに挿入できます。
AC_FL_RunContent(
"src", "TestApp",
"flashVars", "myName=Danger&myHometown=Los%20Angeles",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "TestApp",
"quality", "high",
"name", "TestApp",
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
flashVars プロパティの値は必ずしも静的である必要はありません。例えば JSP を使用してラッパーを返す場合は、flashVars プロパティの値に、ストリングとして評価可能な任意の JSP 式を使用できます。
次の例では、HttpServletRequest オブジェクトに保存された値を使用します(この場合は、フォームまたはクエリ文字列パラメータを使用できます)。
<html>
<head>
<title>/flex2/code/wrapper/DynamicFlashVarTestWrapper.jsp</title>
<style>
body { margin: 0px;
overflow:hidden }
</style>
</head>
<%
String fName = (String) request.getParameter("firstname");
String mName = (String) request.getParameter("middlename");
String lName = (String) request.getParameter("lastname");
%>
<body scroll='no'>
<table width='100%' height='100%' cellspacing='0' cellpadding='0'><tr><td valign='top'>
<script>
<h1>Dynamic FlashVarTest Wrapper</h1>
</script>
<object id='mySwf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%' width='100%'>
<param name='src' value='../assets/FlashVarTest.swf'/>
<param name='flashVars' value='firstname=<%= fName %>&lastname=<%= lName %>'/>
<embed name='mySwf' src='../assets/FlashVarTest.swf' pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' height='100%' width='100%' flashVars='firstname=<%= fName %>&lastname=<%= lName %>'/>
</object>
</td></tr></table>
</body>
</html>
ユーザーがラッパーを使用せずにブラウザで直接 SWF ファイルを要求した場合は、クエリ文字列の変数にアクセスするために追加のコードを提供する必要はありません。次の URL は、Nick という名前と居住地である San Francisco を Flex アプリケーションに渡します。
http://localhost:8100/flex/myApp.swf?myName=Nick&myHometown=San%20Francisco
HTML ラッパーの詳細については、『Adobe Flex 3 アプリケーションの構築とデプロイ』のラッパーについて
flashVars プロパティの値は、URL エンコードされている必要があります。ストリング形式は、アンパサンド(&)で区切られた名前と変数のペアです。特殊文字およびプリント不可の文字をエスケープするには、パーセント記号(%)に続けて 2 桁の 16 進数値を入力します。プラス記号(+)を使用して 1 つのスペースを表現できます。
flashVars プロパティのエンコードは、ページのエンコードと同じです。Windows プラットフォーム上の Internet Explorer は、UTF-16 準拠のストリングを提供します。Netscape は、UTF-8 エンコードされたストリングを Flash Player に送ります。
ほとんどのブラウザは、最大 64 KB(65535 バイト)長の flashVars ストリングまたはクエリ文字列をサポートします。名前と値のペアをいくつでも含めることができます。
プロパティの値を、ラッパー内の <object> および <embed> タグの src プロパティに追加できます。src プロパティは、Flex アプリケーションの SWF ファイルの場所を識別します。flashVars プロパティにアクセスするのと同じ方法で、これらにアクセスします。
次の例では、カスタムラッパー内で src プロパティにクエリ文字列パラメータを追加します。
<object ... >
<param name='src' value='TitleTest.mxml.swf?myName=Danger'>
...
<embed src='TitleTest.mxml.swf?myName=Danger' ... />
</object>
この方法で定義された変数には、flashVars プロパティと同じ方法でアクセスできます。詳細については、flashVars プロパティへのアクセスを参照してください。
flashVars プロパティの値にアクセスするには、Application オブジェクトの parameters プロパティを使用します。このプロパティは、パラメータを名前と値のペアとして保存する動的オブジェクトを指しています。parameters オブジェクトの変数にアクセスするには、parameters.variable_nameを指定します。
Flex アプリケーションでは、通常、実行時プロパティの値をローカル変数に割り当てます。アプリケーションの creationComplete イベントが送出された後で、これらのプロパティの値を割り当てます。そうでない場合、実行時プロパティの値をローカル変数に割り当てようとしても、プロパティを使用できないことがあります。
次の例では、myName および myHometown 変数を定義し、initVars() メソッドの Label コントロールのテキストにこれらの変数をバインドします。
<?xml version="1.0"?>
<!-- wrapper/ApplicationParameters.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initVars()">
<mx:Script><![CDATA[
// Declare bindable properties in Application scope.
[Bindable]
public var myName:String;
[Bindable]
public var myHometown:String;
// Assign values to new properties.
private function initVars():void {
myName = Application.application.parameters.myName;
myHometown = Application.application.parameters.myHometown;
}
]]></mx:Script>
<mx:VBox>
<mx:HBox>
<mx:Label text="Name: "/>
<mx:Label text="{myName}" fontWeight="bold"/>
</mx:HBox>
<mx:HBox>
<mx:Label text="Hometown: "/>
<mx:Label text="{myHometown}" fontWeight="bold"/>
</mx:HBox>
</mx:VBox>
</mx:Application>
ユーザーが myName および myHometown パラメータを flashVars プロパティとして定義してこのアプリケーションを要求すると、それらの値が Label コントロールに表示されます。
flashVars プロパティをすべて表示するには、次の例に示すように、parameters オブジェクトを繰り返します。
<?xml version="1.0"?>
<!-- wrapper/IterateOverApplicationParameters.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script><![CDATA[
private function init():void {
for (var i:String in Application.application.parameters) {
ta1.text += i + ":" + Application.application.parameters[i] + "\n";
}
}
]]></mx:Script>
<mx:TextArea id="ta1" width="300" height="200"/>
</mx:Application>
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート