欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

flash action 詳解(9)_Flash教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:flash action 詳解(8)
第4章:函數(shù)---函數(shù)的基本概念終于寫完了數(shù)據(jù)類型和條件以及循環(huán)語句部分,現(xiàn)在可以講講函數(shù)了.函數(shù)是在程序中可以重復(fù)使用的代碼.你可以將需要處理的值或

同變量一樣, 函數(shù)也可以具有全局性. 只要在聲明時在前面給它加一個 _global 就可以了:
//計算矩形面積的全局函數(shù)
_global.areaOfBox = function (a, b) {
return a*b; //在這里返回結(jié)果
}
//測試函數(shù)
area = areaOfBox(3, 6);
trace("area=" area);
請注重: 在函數(shù)體中出現(xiàn)的要害字 this 代表的是調(diào)用函數(shù)的 MovieClip, 而不是函數(shù)體所在的 MovieClip. 這很輕易被忽略而產(chǎn)生不期望的結(jié)果. 假如要指定 this 所代表的對象就要用到 Function.call() 和 Function.apply() 方法. 在后面的 arguments 對象介紹中會講到.
函數(shù)參數(shù)的檢查

為了保證函數(shù)運行的正確性, 我們有時必須檢測用戶是否給了足夠的或是正確類型的參數(shù). 下面是我對上面例子進(jìn)行改動后的代碼:
//計算矩形面積的全局函數(shù)
_global.areaOfBox = function (a, b) {
//輸出兩個參數(shù)之和, 用于理解下面的 typeof 語句
trace("a b=" (a b));
//檢測參數(shù)是否足夠且類型正確
if(a==undefined || b==undefined || typeof(a b)!="number") {
trace("<參數(shù)錯誤>");
return 0; //返回 0 作為錯誤時的結(jié)果
}
return a*b; //在這里返回結(jié)果
}
//測試函數(shù)
trace("----下面是正確的參數(shù)----");
area = areaOfBox(3, 6);
trace("area=" area);
trace("----下面是錯誤的參數(shù)----");
//這里為了節(jié)省篇幅, 我在命令中直接調(diào)用函數(shù), 而不是先將返回值賦給一個變量
//其實這才是我們常用的函數(shù)調(diào)用方法
trace("area=" areaOfBox(3, "6"));
trace("----下面是不足的參數(shù)----");
trace("area=" areaOfBox(3));
上例中我用 a==undefined 來判定 a 是否被賦值了(即是否已定義, 對于 undefined 數(shù)據(jù)類型的內(nèi)容請參閱前一章的內(nèi)容). 為了確保萬無一失, 我還用了 b==undefined 來保證 b 也已被賦值, 中間使用一個邏輯 "或" 運算符 || 來連接這兩個條件.
此外, 在這兩個條件后面我又通過 typeof(a b)!="number" 來確認(rèn)參數(shù)類型是否正確(關(guān)于 typeof 要害字的信息請參考前一章). 這里我利用了 Actions cript 的一個特點: 數(shù)值與字符串相加的和會被優(yōu)先做為字符串處理. 所以 a b 中只要有一個為字符串, 那么整個 a b 的返回值就是一個字符串, 在后面通過 typeof 來檢測的結(jié)果自然就不是我們所要的 "number". 通過 trace("a b=" (a b)); 輸出的結(jié)果可以看出這一點.

--------------------------------------------------------------------------------
在 Actions cript 中除了用戶定義的函數(shù)外, 還有預(yù)定義的內(nèi)建函數(shù). 對于不同的對象, 也有不同的函數(shù)(或者說是方法)可以調(diào)用. 下面是擁有最高優(yōu)先級的系統(tǒng)內(nèi)建函數(shù)列表:
函數(shù) 說明
Boolean 將所給參數(shù)值轉(zhuǎn)化為邏輯值(也叫做布爾值)
escape 將所給參數(shù)轉(zhuǎn)化為字符串并用 URL 格式編碼(所有非標(biāo)準(zhǔn)字符將被轉(zhuǎn)化為以 % 開頭的十六進(jìn)制值)
eval 返回所給參數(shù)表示的對象, 參數(shù)可以是常量, 表達(dá)式, 屬性等(這在 DuplicateMovieClip 時經(jīng)常用到)
getProperty 返回指定對象的指定屬性值
getTimer 返回從動畫開始運行到當(dāng)前所經(jīng)過的毫秒數(shù)
getVersion 返回 Flash 版本和操作系統(tǒng)信息
isFinite 返回所給參數(shù)是否是有窮的(邏輯型返回值)
//創(chuàng)建新對象
object_1 = new Object();
object_1.value = 0; //為對象加入 value 屬性并給予初值 0
object_2 = object_1; //由 object_1 復(fù)制出一個 object_2, 此時兩者的 value 屬性均為 0
//測試函數(shù)
areaOfBox.call(object_1, 3, 6);
trace("object_1.value=" object_1.value);
array_ab = [4, 5]; //創(chuàng)建參數(shù)數(shù)組
areaOfBox.apply(object_2, array_ab);
trace("object_2.value=" object_2.value);

為什么要通過 call 和 apply 來調(diào)用函數(shù)? 這樣不比前面的直接調(diào)用麻煩嗎?
的確, 這樣調(diào)用函數(shù)比較麻煩, 但你注重到了我使用的第一個參數(shù)沒有? 通過第一個參數(shù)可以指定在函數(shù)體中的 this 要害字代表什么對象, 這就是用 call 和 apply 的好處(關(guān)于對象和 this 的內(nèi)容在后面章節(jié)中才會提到, 在這里暫且不提). 這個好處只有在實際的編程中你才能體會得到, 這里只是簡要介紹一下, 讓你有個基本的概念.
假如函數(shù)中沒有使用 this 要害字, 第一個參數(shù)要用 null 代替.
在本例中第一個返回值被放入 object_1 的 value 屬性中, 另一個會被放入 object_2 的 value 屬性中. 通過 call 和 apply 的第一個參數(shù)我們讓函數(shù)體中的 this 先后代表了 object_1 和 object_2 兩個對象. 第一個參數(shù)后面的實際參數(shù)的給予完全依照要調(diào)用函數(shù)的參數(shù)個數(shù)和類型確定.
至于 call 與 apply 的不同之處上面已經(jīng)表示得很明白了: apply 的實際參數(shù)是通過數(shù)組傳遞的.
arguments 對象
arguments 對象
arguments 對象, 顧名思義就是參數(shù)對象, 它包含的是函數(shù)調(diào)用的參數(shù). 作為一個數(shù)組對象, 它只有三個屬性:
屬性 描述
arguments.callee 正被調(diào)用的函數(shù)
arguments.caller 正在進(jìn)行此調(diào)用的函數(shù)
arguments.length 傳遞給被調(diào)用函數(shù)的參數(shù)數(shù)目

分享:flash action 詳解(7)
循環(huán)語句--for循環(huán)語句for對于for循環(huán),我想大多數(shù)讀者都不會生疏.下面是一個求1到100的自然數(shù)之和的程序段.varsum=0;//下面是for循環(huán)for(v

來源:設(shè)計前沿網(wǎng)上收集//所屬分類:Flash教程/更新時間:2008-03-05
相關(guān)Flash教程