オブジェクトタグのPARAM値をフラッシュに渡すにはどうすればよいですか?
-
22-09-2019 - |
質問
皆さん、今日は Object Embed コードから Flash ムービーに渡される XML ファイルへのリンクを取得しようとしています。(SWFobject は使用しません)。3 つの異なる XML ファイルに接続できる 1 つの swf ファイルがあります。
試み 1
以下は HTML コードです (XML パスを取得しようとしています)。
<div class="left">
<h2>300 x 353 Green Accent Color</h2>
<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','300','height','353','src','TEN','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','TEN' ); //end AC code
</script><noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="300" height="353">
<param name="movie" value="player.swf" />
<param name="quality" value="high" />
<param name="XML" value="client_user.xml" />
<embed src="T.swf" allowscriptaccess="always" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="300" height="353"></embed>
</object></noscript>
</div>
ドキュメントクラス
private var theXML:String = root.loaderInfo.parameters.xmlPath;
public function TEN():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
xmlLoader.addEventListener(Event.COMPLETE, xmlCompleteHandler);
xmlLoader.load(new URLRequest(root.loaderInfo.parameters.xmlPath));
loader = new BulkLoader("bulky");
loader.logLevel = BulkLoader.LOG_INFO;
loader.addEventListener(BulkLoader.COMPLETE, onBulkLoadComplete);
loader.addEventListener(BulkLoader.PROGRESS, onBulkLoadProgress);
//loader.add("client.xml",{id:"xmldata"}); //<- for TESTING
//loader.add(theXML+".xml",{id:"xmldata"}); //<- for LIVE
loader.add(xmlPath+".xml",{id:"xmldata"}); //<- for LIVE
loader.start();
}
試み 2
異なる PARAM 渡し構文を使用した HTML:
<div class="right">
<h2>520 x 477 Blue Accent Color</h2>
<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','300','height','353','src','TEN','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','TEN' ); //end AC code
</script><noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="300" height="353">
<param name="movie" value="T.swf?xmlPath=0" />
<param name="quality" value="high" />
<param name="xmlPath" value="520.xml" />
<embed src="T.swf" allowscriptaccess="always" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="300" height="353"></embed>
</object></noscript>
</div>
試み 3
フラッシュコードが更新されました:
private var theXML:String = "";
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
theXML = stage.loaderInfo.parameters.xmlPath;
loader = new BulkLoader("bulky");
loader.logLevel = BulkLoader.LOG_INFO;
loader.addEventListener(BulkLoader.COMPLETE, onBulkLoadComplete);
loader.addEventListener(BulkLoader.PROGRESS, onBulkLoadProgress);
//loader.add("client_user.xml",{id:"xmldata"}); //<- for TESTING
loader.add(theXML,{id:"xmldata"}); //<- for LIVE
//loader.add(theXML+".xml",{id:"xmldata"}); //<- for LIVE
loader.start();
}
更新された HTML コード:
<div class="right">
<h2>520 x 477 Blue Accent Color</h2>
<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','300','height','353','src','TEN','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','T' ); //end AC code
</script><noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="300" height="353">
<param name="movie" value="T.swf?xmlPath=0.xml" />
<param name="quality" value="high" />
<param name="xmlPath" value="520.xml" />
<embed src="T.swf?xmlPath=520.xml" allowscriptaccess="always" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="300" height="353"></embed>
</object></noscript>
</div>
現時点では、パラメータから XML ファイルをロードしていません:(
解決
見る FlashVars--これは、オブジェクト タグを介して変数を SWF に渡す標準的な方法です。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="300" height="353">
<param name="movie" value="http://www.howdini.com/TEN/TEN.swf" />
<param name="quality" value="high" />
<param name="flashVars" value="theXML=client_user.xml" />
<embed src="TEN.swf"
flashVars="theXML=client_user.xml"
allowscriptaccess="always"
quality="high"
pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash" width="300" height="353">
</embed>
</object>
この方法で FlashVars を使用するか、SWF の URL にクエリ パラメータを設定します (TEN.SWF?theXML=client_user.xml
)、あなたの情報を記入します ローダー情報.パラメータ 分野。
私は Flex (FlashVar が保存されている場所) に慣れています。 application.parameters
, 、ただし AS3 では、 loaderInfo
:
// constructor
public function init():void {
theXML = this.loaderInfo.parameters.theXML;
...
}
他のヒント
うん、ちょうどswfobjectを使用! HTMLの
オン<script>
swfobject.embedSWF("your-movie.swf", "yourdivid", "width", "height", "flashverion", "path to expressIntall.swf", {flashvar:"value", flashvar2:"value"}, {flashparam:"value", flashparam2:"value"});
</script>
<div id="yourdivid">Your alternative content or download links for flash player</div>
フラッシュ
var var1:Type = root.loaderInfo.parameters['flashvar'];
var var2:Type = root.loaderInfo.parameters['flashvar2'];
所属していません StackOverflow