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"

你可能感兴趣的:(Web,object,Flash,null,Parameters,actionscript)