如何通过对象标记参数值到Flash? [英] How to pass Object tag PARAM value into Flash?

查看:172
本文介绍了如何通过对象标记参数值到Flash?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿大家,今天我想获得一个链接从对象中嵌入code传递到我的Flash影片的XML文件。 (不使用SWFObject)。我应该是能够连接到3个不同的XML文件1 swf文件。

尝试1


下面是HTML code(我试图让theXML路径):

 < D​​IV CLASS =左>
< H2> 300×353格林强调色彩< / H>

<脚本类型=文/ JavaScript的>
        AC_FL_RunContent( '$c$cbase','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' ); //结束AC code
< / SCRIPT>< NOSCRIPT>

<对象的classid =CLSID:D27CDB6E-AE6D-11CF-96B8-444553540000codeBase类=htt​​p://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9, 0,28,0WIDTH =300HEIGHT =353>
  < PARAM NAME =电影值=player.swf/>
  < PARAM NAME =质量值=高/>
  < PARAM NAME =XML值=client_user.xml/>
  <嵌入SRC =T.swf的allowScriptAccess =始终以品质=高PLUGINSPAGE =htt​​p://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash类型=应用/的X冲击波闪光宽度=300HEIGHT =353>< /嵌入>
< /对象>< / NOSCRIPT>

< / DIV>
 


文档类

 私人变种theXML:字符串= root.loaderInfo.parameters.xmlPath;


公共职能TEN():无效
{
    如果(阶段)的init();
    其他的addEventListener(Event.ADDED_TO_STAGE,INIT);
}

私有函数初始化(E:事件= NULL):无效
{
    removeEventListener(Event.ADDED_TO_STAGE,INIT);

    xmlLoader.addEventListener(引发Event.COMPLETE,xmlCompleteHandler);
    xmlLoader.load(新的URLRequest(root.loaderInfo.parameters.xmlPath));

    装载机=新BulkLoader(大件);
    loader.logLevel = BulkLoader.LOG_INFO;
    loader.addEventListener(BulkLoader.COMPLETE,onBulkLoadComplete);
    loader.addEventListener(BulkLoader.PROGRESS,onBulkLoadProgress);
    //loader.add("client.xml",{id:"xmldata}); //<  - 用于测试
    //loader.add(theXML+".xml",{id:"xmldata}); //<  - 对于LIVE
    loader.add(xmlpath中+XML,{ID:XMLDATA}); //<  - 对于LIVE
    loader.start();
}
 



尝试2


HTML不同PARAM传球语法:

 < D​​IV CLASS =权与GT;
        < H2>,520 X 477蓝强调色彩和LT; / H>
        <脚本类型=文/ JavaScript的>
AC_FL_RunContent( '$c$cbase','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' ); //结束AC code
< / SCRIPT>< NOSCRIPT>

<对象的classid =CLSID:D27CDB6E-AE6D-11CF-96B8-444553540000codeBase类=htt​​p://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9, 0,28,0WIDTH =300HEIGHT =353>
  < PARAM NAME =电影值=?T.swf xmlpath中= 0/>
  < PARAM NAME =质量值=高/>
  < PARAM NAME =xmlpath中值=520.xml/>
  <嵌入SRC =T.swf的allowScriptAccess =始终以品质=高PLUGINSPAGE =htt​​p://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash类型=应用/的X冲击波闪光宽度=300HEIGHT =353>< /嵌入>
< /对象>< / NOSCRIPT>
    < / DIV>
 



尝试3


闪存code更新时间:

 私人变种theXML:字符串=;

私有函数初始化(E:事件= NULL):无效
{
    removeEventListener(Event.ADDED_TO_STAGE,INIT);

    theXML = stage.loaderInfo.parameters.xmlPath;

    装载机=新BulkLoader(大件);
    loader.logLevel = BulkLoader.LOG_INFO;
    loader.addEventListener(BulkLoader.COMPLETE,onBulkLoadComplete);
    loader.addEventListener(BulkLoader.PROGRESS,onBulkLoadProgress);
    //loader.add("client_user.xml",{id:"xmldata}); //<  - 用于测试
    loader.add(theXML,{ID:XMLDATA}); //<  - 对于LIVE
    //loader.add(theXML+".xml",{id:"xmldata}); //<  - 对于LIVE
    loader.start();
}
 

更新HTML code:

 < D​​IV CLASS =权与GT;
        < H2>,520 X 477蓝强调色彩和LT; / H>
        <脚本类型=文/ JavaScript的>
AC_FL_RunContent( '$c$cbase','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' ); //结束AC code
< / SCRIPT>< NOSCRIPT>

<对象的classid =CLSID:D27CDB6E-AE6D-11CF-96B8-444553540000codeBase类=htt​​p://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9, 0,28,0WIDTH =300HEIGHT =353>
  < PARAM NAME =电影值=?T.swf xmlpath中= 0.xml/>
  < PARAM NAME =质量值=高/>
  < PARAM NAME =xmlpath中值=520.xml/>
  <嵌入SRC =?T.swf xmlpath中= 520.xml的allowScriptAccess =始终以品质=高PLUGINSPAGE =htt​​p://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash 类型=应用程序/ x-冲击波闪光宽度=300HEIGHT =353>< /嵌入>
< /对象>< / NOSCRIPT>
    < / DIV>
 

现在它不加载从参数XML文件:(

解决方案

Flash变量 - 这是通过对象标签传递变量到SWF的标准方法

 <对象的classid =CLSID:D27CDB6E-AE6D-11CF-96B8-444553540000codeBase类=htt​​p://download.macromedia.com/pub/shockwave/出租车/闪光灯/ swflash.cab#版本= 9,0,28,0WIDTH =300HEIGHT =353>
  < PARAM NAME =电影值=htt​​p://www.howdini.com/TEN/TEN.swf/>
  < PARAM NAME =质量值=高/>
  < PARAM NAME =Flash变量值=theXML = client_user.xml/>
  <嵌入SRC =TEN.swf
         FLASHVARS =theXML = client_user.xml
         allowScriptAccess的=总是
         品质=高
         PLUGINSPAGE =htt​​p://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash
         TYPE =应用程序/ x-冲击波闪光宽度=300HEIGHT =353>
  < /嵌入>
&所述; /对象>
 

使用FlashVars这种方式,或者在SWF的URL设置查询参数( TEN.SWF?theXML = client_user.xml ),将填补你的<一个href="http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/display/LoaderInfo.html#parameters"相对=nofollow> loaderInfo.parameters 领域。


我已经习惯了的Flex(其中Flash变量都存储在 application.parameters ,但在AS3,我想你会使用的LoaderInfo

  //构造
公共职能的init():无效{
    theXML = this.loaderInfo.parameters.theXML;
    ...
}
 

Hey everyone, today I'm trying to get a link to an XML file passed from the Object Embed code into my Flash movie. (Not using SWFobject). I have 1 swf file that should be able to connect to 3 different XML files.

Attempt 1


Below is the HTML code (I'm trying to get theXML path):

<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>


Document Class

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();
}



Attempt 2


HTML with different PARAM passing syntax:

<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>



Attempt 3


Flash Code Updated:

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();
}

Updated HTML code:

<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>

Right now it's not loading the XML file from the param :(

解决方案

Look at FlashVars--this is the standard way of passing variables through the object tags to the 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>

Using FlashVars this way, or setting query parameters in the SWF's URL (TEN.SWF?theXML=client_user.xml), will fill in your loaderInfo.parameters field.


I'm used to Flex (where the FlashVars are stored in application.parameters, but in AS3, I think you'd use the loaderInfo:

// constructor
public function init():void {
    theXML = this.loaderInfo.parameters.theXML;
    ...
}

这篇关于如何通过对象标记参数值到Flash?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆