代码之家  ›  专栏  ›  技术社区  ›  Leon Gaban

如何将对象标记参数值传递到flash中?

  •  1
  • Leon Gaban  · 技术社区  · 15 年前

    嘿,各位,今天我想链接到一个XML文件,这个文件是从我的Flash电影中嵌入的对象代码中传递过来的。(不使用swfobject)。我有1个SWF文件,应该能够连接到3个不同的XML文件。

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


    具有不同参数传递语法的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文件:(

    2 回复  |  直到 14 年前
        1
  •  3
  •   Michael Brewer-Davis    15 年前

    看看 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 )将填写您的 loaderInfo.parameters 字段。


    我习惯弯曲(flashvars存储在 application.parameters 但是在AS3中,我想你应该使用 loaderInfo :

    // constructor
    public function init():void {
        theXML = this.loaderInfo.parameters.theXML;
        ...
    }
    
        2
  •  1
  •   Eder Lima    15 年前

    是的,使用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'];
    
    推荐文章