Web页面Flash传递参数综述

Web页面想Flash传递参数大致分为下面三类

1.通过swf文件的URL传递:即在swf文件的URL后加入形如?a=A&b=B的字符串。
2.通过swf的Activex控件参数传递:即在Object的属性中<param name="FlashVars" value="a=A&b=B"。

这 两种作法的结果都是在swf文件的顶层对象中生成包含两个参数的参数列表:a=A和b=B。在使用ActionScript2.0以前的版本的Flash 中,可以直接通过引用顶层文件对象的root.a,root.b或_level0.a,_level0.b属性就可以访问到了。

在ActionScripti3.0 后,由于加强了面向对象的概念,因此默认的参数被包装在了顶层对象(DisplayObject类型)所包含的LoaderInfo对象的 parameters属性中。通过访问root.loaderInfo.parameters属性可以对传入的参数进行遍历。


例如在文档类中定义var param:Object = root.loaderInfo.parameters;
如果取u1的值,可以用param["u1"],同样u2的值:param["u2"]
做了个小例子,document class如下:

  
 1  package  {
 2       import  flash.display.Sprite;    
 3       import  flash.display.Stage;    
 4       import  flash.display.StageScaleMode;    
 5       import  flash.text.TextField;    
 6       import  flash.text.TextFieldAutoSize;
 7      
 8       public   class  LoaderInfoDemo  extends  Sprite {
 9           public  function LoaderInfoDemo() {
10              stage.scaleMode  =  StageScaleMode.NO_SCALE;
11              var out_txt:TextField  =  createText();
12              out_txt.border  =   true ;
13              out_txt.borderColor  =   0xFF6600 ;
14              out_txt.y  =   20 ;            
15              addChild(out_txt);
16              var info_txt:TextField  =  createText();
17              info_txt.text  =   " 修改loaderInfoDemo.swf?msg=xxx中的xxx值,然后回车 " ;
18              info_txt.autoSize  =  TextFieldAutoSize.LEFT;
19              addChild(info_txt);
20              var param:Object  =  root.loaderInfo.parameters;
21               if  (param[ " msg " !=   null ) {
22                  out_txt.text  =  param[ " msg " ];
23                  trace( " value: "   +  param[ " msg " ]);
24              } else  {                
25                  out_txt.text  =   " null " ;
26                  trace( " value:null " );
27              }        
28          }                
29           private  function createText():TextField {
30              var tmp:TextField  =   new  TextField();
31              tmp.selectable  =   false ;
32              tmp.width  =   100 ;
33              tmp.height  =   20 ;
34               return  tmp;
35          }
36      }
37  }


3.第三类方法是在影片内部,调用loadVariables方法,从指定位置主动读取配置参数,并将参数数值传递到指定的对象内部。

下面的示例将名为 params.txt 的文本文件中的信息加载到使用 createEmptyMovieClip() 创建的影片剪辑 target_mc 中。setInterval() 函数用于检查加载进度。该脚本检查 params.txt 文件中是否存在名为 done 的变量。

 

 1  this .createEmptyMovieClip( " target_mc " this .getNextHighestDepth());
 2  loadVariables( " params.txt " , target_mc);
 3  function checkParamsLoaded() {
 4       if  (target_mc.done  ==  undefined)
 5      { 
 6          trace( " not yet. " ); 
 7      }  else  { 
 8          trace( " finished loading. killing interval. " ); 
 9          trace( " ------------- " ); 
10           for  (i in target_mc) {
11              trace(i  +   " "   +  target_mc[i]);
12          } 
13          trace( " ------------- " );
14          clearInterval(param_interval);
15      }
16  }
17  var param_interval:Number  =  setInterval(checkParamsLoaded,  100 );

 

外部文件 params.txt 包括以下文本:

var1="hello"&var2="goodbye"&done="done"

你可能感兴趣的:(Flash)