Luar's Flash Playground:Flash Lite的Call(模擬Function)怎樣傳Parameter和Return Value
新聞(100)
觀點或評論(93)
Flash書(63)
教程(65)
Design Patterns(3)
FlashCom筆記(45)
Flash Remoting筆記(27)
Flex筆記(11)
Flash Lite筆記(14)
PHP資訊(22)
Ajax筆記(9)
習作(46)
組件(15)
酷站(31)
學習資源(28)
書籍推介(15)
本站與我(90)
RSS瀏覽器
聯絡
熱愛鑽研
Ajax
ActionScript
Flash
Flash Lite
Flex
Flash Remoting
FlashCom
Director
Lingo
PHP
Multiplayer Game

搜尋
VCASMO
Flash Lite的Call(模擬Function)怎樣傳Parameter和Return Value (05-08-2005)
Flash Lite 1.1的Syntax仍然是Flash 4,沒有Function,所以要用Call模擬Function,Call原來是用來執行某一格Frame的ActionScript(以下簡稱:Call Frame),所以沒有傳Parameter和Return Value的能力,不過因為Flash Lite支援Variable Declaration使用Dot Sytnax,所以可以做到傳Parameter和Return Value,更強是達到Call by Value和Call by Reference的分別。

首先,要有一個良好編程習慣,所有這樣的Call Frame,不要在Main Movie Timeline建立,我看到有些人以為將Call Frame放在Main Movie後面,只要不播放到那裡,就沒有所謂,而且同一個Timeline裡,Scope和Movie Clip路徑問題又簡單些。

正確應該是為每一個Function,獨立建立一個Movie Clip(以下簡稱:CallMC),或者用OO思考,同一個Movie Clip有很多Call Frame,當作是Object的Method。這樣傳入來Parameter不會污染Main Movie,而且封裝好一點,可以容易地將整個Movie Clip複製到另一個FLA中使用,提高Reusability。

第二,建立的Movie Clip,Frame 1一定要加Stop,Frame 2才是程式碼和Frame Label,這樣避免Movie Clip放在Main Movie Timeline時,立即執行了你的程式碼。

以下是一個簡單的加數Function例子:

Call by Value

Movie Clip名稱funcByValue, Frame 2, Label Name: addNo
ret = par1+par2;
使用方法:利用Dot Sytnax先在Movie Clip funcByValue裡建立兩個Variable par1, par2,這變相達到傳Parameter的能力,程式執行完後,Movie Clip funcByValue裡建立一個Variable叫ret,外面只要讀取它,變相達到Return Value的效果:
myNo1 = 10;
myNo2 = 5;
funcByValue.par1 = myNo1;
funcByValue.par2 = myNo2;
call("funcByValue:addno");
myNo3 = funcByValue.ret;
trace("function call by value");
trace("myno1: " add myno1); //10
trace("myno2: " add myno2); //5
trace("myno3: " add myno3); //15
Call by Reference

eval()是Flash Lite裡非常有用的利器,Array, Movie Clip Dynamic Naming(即Array Access operator [])等都是靠它才達成,而且它不像Flash 5後eval()不可放在=的左邊,因此可以發揮到很大效能。剛才例子,改為Call by Reference,CallMC的Call Frame變成:
eval("../:" add par1) = eval("../:" add par1)*10;
eval("../:" add par2) = eval("../:" add par2)*10;
eval("../:" add ret) = eval("../:" add par1)+eval("../:" add par2);
使用方法:利用Dot Sytnax先在Movie Clip funcByRef裡建立Variable名稱的Variable,用eval()達到Reference的效果:
myNo4 = 1;
myNo5 = 2;
myNo6 = 3;
trace("before function call by reference");
trace("myno4: " add myno4); //1
trace("myno5: " add myno5); //2
trace("myno6: " add myno6); //3
funcByRef.par1 = "myNo4";
funcByRef.par2 = "myNo5";
funcByRef.ret = "myNo6";
call("funcByRef:addno");
trace("after function call by reference");
trace("myno4: " add myno4); //10
trace("myno5: " add myno5); //20
trace("myno6: " add myno6); //30
下載範例

本文章由luar發表。
同組文章

Movable Type 3.15系統支持,Luar's Production版權所有。