Web 頁面Flash傳遞參數綜述

來源:互聯網
上載者:User

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"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.