• 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"
  • 相关阅读:
    volatile 关键字,你真的理解吗?
    kafka如何彻底删除topic及数据
    CentOS7 安装letsencrypt
    Qunar风控安全产品的探索之路
    乐观锁的实际应用
    前端打包报错内存溢出
    Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java11openjdkamd64/lib/libawt_xawt.so
    GitHud加速工具 devsidecar 安装
    linux系统命令行或shell里面设置终端title标题(适用与ubuntu,centos)[转]
    Sublime 搜索显示<binary>
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1606542.html
Copyright © 2020-2023  润新知