版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Flash編程基本(言簡意賅適合新人沒有基本也能看懂?。?/p>
教學(xué)提綱
ActionScript代碼輸入與編輯
語法與構(gòu)造
錯誤與調(diào)試
重點與難點
重點是語法與構(gòu)造,視課堂講授進度安排教學(xué)內(nèi)容。由于安排內(nèi)容較多,若
課堂上無法所有完畢,則改為回去自學(xué)。
教學(xué)內(nèi)容:
一、ActionScript代碼輸入與編輯
Flash是一種集美工、動畫與編程于一體集成開發(fā)環(huán)境,故而其編程方式與其
他純程序開發(fā)編程方式有所不同。Flash自誕生之日起,就是以美工、動畫為主,
以程序為輔應(yīng)用框架。咱們可以理解為,F(xiàn)lash總體構(gòu)造就是一種影片剪輯
(MovieClip),而幾乎所有多媒體內(nèi)容都是掛在這個影片剪輯中某個分支之上,
涉及腳本(代碼),形成一種樹形構(gòu)造。自ActionScript3.0起,這個框架被規(guī)范
化為顯示對象層次構(gòu)造。
一種典型Flash作品構(gòu)造如下圖所示:
典型Flash作品構(gòu)造
這種以動畫為主,代碼為輔程序框架好處是顯而易見,由于游戲開發(fā)許多工
作與畫面設(shè)計打交道,咱們運用對象層次構(gòu)造,在直觀環(huán)境下創(chuàng)作幾乎整個游戲!
腳本從屬地位好處顯而易見,而其害處也越來越被人們結(jié)識,就是對于其她
程序開發(fā)人員來說,F(xiàn)lash腳本有些莫名其妙,要想開發(fā)Flash程序,就必要先理
解Flash顯示對象層次構(gòu)造,動畫,時間軸等原本與編程無多大聯(lián)系知識。當(dāng)前,
Flash界面設(shè)計與代碼設(shè)計分離成了趨勢,例如通過flex等提供一種完全適合程
序員開發(fā)環(huán)境。由于游戲類型應(yīng)用,界面與程序結(jié)合非常緊密,因此還是采用原
有框架,在單獨Flash開發(fā)環(huán)境中完畢所有工作。
雖然Actionscript代碼可以被掛在Flash中許多分支上,但查看和編輯腳本卻
十分以便,由于所有代碼都在動作面板(腳本編輯器)中輸入和編輯,只要用鼠
標(biāo)點擊相應(yīng)位置或者對象,就會顯示這個位置或?qū)ο笏杏么a。
打開一種Flash文檔,按F9鍵,或者點擊【窗口】|【動作】命令,即可打開
動作面板。
動作面板如下圖所示:
\動作-幀X
Actionscript3.0令毋由▼喜(耳瞥節(jié)苦¥O0O圍、腳本助手學(xué),
司頂級vartestNumber;T
句語言元素varcount=0;\//
adobe.utils/偷機產(chǎn)生一個i*1000之間的整數(shù)//
ZJ句
fl.accessibilitycount++;I//
句fl.containerstestNumber=Maih.round(Math,random()*^99)+1;/
fl.controls\}while(checkNumben(testNumber));//
2LItrace("找到一個能被建除并且二進制數(shù)的第四根是0第璘是1的數(shù):
fl.controls.dataGri.trace("總共循環(huán)了V^"*。urrt+“T次”):T7
fl.controls.listClas...
ZJ句functioncheckNumber(paral:Number):Boolean{/
fl.controls.progres...if(paral%7==0(paral?3)%4=-/2){/
司
fl.core,returnfalse;lA//
\}else{//
fl.data
ZJ句\returntrue;i//
fl.events
句
.—1
臼Bl當(dāng)前選擇」
腳本版本選擇
a圖層i:幀i工具欄//
臼百場景1_語言元素列表
a圖層1:幀1?腳本助手
當(dāng)前代碼位置
菜單與幫J
對
]回圖層1:rpsr
5第17行洪17行),第1列
動作面板
由于接下來要經(jīng)常和動作面板打交道,因此這里對動作面板進行較為詳細(xì)簡
介。
腳本版本選取:
點擊下拉按鈕彈出ActionScript版本列表,選取其中一種,則語言元素列表
內(nèi)容會作相應(yīng)變化。需要注意是這里修改是語言元素列表顯示內(nèi)容,但本文檔
ActionScript版本并不因而而被修改。
ActionScript3.0▼
ActionScript1.0&2.0
ActionScript3.0
FlashLite1.0ActionScript
FlashLite1.1ActionScript
FlashLite2.0ActionScript
FlashLite2.1ActionScript
ActionScript版本選取
語言元素列表:
這是一種樹型構(gòu)造目錄,它列出了當(dāng)前版本語言元素、包以及索引。其中每
個包里面有一種或各種類,每個類屬性、辦法和事件也都列在樹型構(gòu)造中。如下
圖所示:
fl.containers
fl.controls
BaseButton
Button
國方法
u事件
帽屬性
@
accessibilityproperties(DisplayObject)
③一
?alpha(DisplayObject)
autoRepeat(BaseButton)
③一
③blendMode(DisplayObject)
buttonMode(Sprite)
語言元素列表
雙擊其中一種條目,就可以在代碼窗口添加一行相應(yīng)代碼,然后用腳本助手
或者直接手動進行必要修改。
當(dāng)前代碼位置:
當(dāng)前代碼位置指出腳本編輯器中代碼位于Flash文檔何處。典型代碼放置位
置是主時間軸幀上或者是影片剪輯中幀上。
如果是AS2或更早版本,代碼也也許是直接依附在影片剪輯或者按鈕上。做
法是單擊一種剪輯或者按鈕,然后打開動作面板,輸入或者編輯其上代碼。相信
有過Flash8或此前版本使用經(jīng)驗讀者對按鈕上on函數(shù)再熟悉但是了。
工具欄:
動作面板工具欄給出了針對Flash代碼各種實用按鈕,這些按鈕闡明如下圖所示:
添
查插
語
自顯
折折
應(yīng)應(yīng)
調(diào)
展
顯
刪
找
加
入
法
疊
動
用用
示
會
試
開
除
示
代
目
檢
所
套
塊行
代
成
選
全
注/
碼
查
選
標(biāo)
用
注注
項
部
釋
碼
對
隱
元
路
格
釋釋
提
大
藏
素
徑
示
括
工
具
號
動作面板工具欄及其解釋
點擊☆按鈕將彈出與語言元素列表內(nèi)容同樣菜單。點擊?按鈕可以在編譯
之前查找代碼語法錯誤,這些錯誤會在輸出窗口中顯示。點擊套可以將代碼根
據(jù)其構(gòu)造自動縮進對齊,如果代碼存在語法錯誤,則會提示語法錯誤,無法套用
格式。
從起右邊按鈕,是FlashCS3新增。這些按鈕和VisualStudio.NET有關(guān)工
具類似,預(yù)計是汲取其長處而添加。
腳本助手:
腳本助手啟動時,會在動作面板上部顯示當(dāng)前行代碼構(gòu)造信息,提供詳細(xì)輔
助信息。如圖所示,點擊for循環(huán)語句首行時腳本助手顯示信息:
Ifor:for循環(huán)
腳本助手
啟動腳本助手時無法自由修改腳本代碼,并且擠占了動作面板許多空間,因此它
只適合初學(xué)者在不清晰程序構(gòu)造或者緊張引入語法錯誤狀況下使用。當(dāng)讀者對
ActionScript語法與構(gòu)造具備一定理解之后,應(yīng)當(dāng)取消腳本助手,而在代碼窗口
中自由地編輯代碼。
二、語法與構(gòu)造
本章節(jié)解說ActionScript語法與構(gòu)造,但并不按教科書方式詳細(xì)解說。而是
完全將FlashCS3看作是一種面向?qū)ο缶幊涕_發(fā)環(huán)境,以最簡潔代碼解說
ActionScript語法與構(gòu)造。從簡潔代碼中引申出來各種編程概念和知識面,則以
列表方式平鋪。這種辦法可以使人們運用此前所學(xué)其他語言編程知識,迅速過渡
到ActionScript編程上來。
1)第一段示例代碼
打開FlashCS3Professional,選取【文獻(xiàn)】[【新建】,或者按Ctrl+N,彈出
新建文檔對話框。選取"Flash文檔(ActionScript3.0)”,按擬定新建一種Flash
文檔。點擊“圖層1”第1幀,按【F9】彈出動作面板,輸入如下代碼:
〃這是我第一次寫ActionScript腳本
varsum:Number;
varcount:Number=5;
sum=0;
for(vari:Number=1;i<=count;i++){
sum=i*(i+l)/2;
trace("l累加到"+i+"值為:"+sum);
)
如下圖所示:
◎■510152025
?圖層1Z??
守Jll,II112.0fps
片圜場景1
動作--x1—、
聽Q中▼言但以苜苔甘?①。國
1//這是我第一次寫ActionScript腳本
2varsum:Number;
3varcount:Number=5;
4sum=0;
5for(vari:Number=1;i<=count;i-H"){
6sum=i*(i+l)/2;
7trace("l臬加至「+i+"的值為:"+sum);
8}
第一種腳本
注意:下文若提到“輸入如下代碼”時,就是在新建文檔圖層1第1幀動作面板
中輸入下框中代碼。
在調(diào)試程序前保存文獻(xiàn)是一種良好習(xí)慣,由于誰也不能必定剛剛編寫腳本不
會在調(diào)試過程中導(dǎo)致死機,若調(diào)試過程中浮現(xiàn)死機或者意外退出Flash程序,那
么沒有保存內(nèi)容將會丟失。按Ctrl+S保存文獻(xiàn),然后選取【控制】|【測試影片】,
或者按Ctrl+Enter測試影片。這時會彈出兩個窗口,一種是Flash作品窗口,由
于剛才沒有建立任何可見元素,因此這個窗口是空白。尚有一種是輸出窗口,當(dāng)
有trace輸出語句或者浮現(xiàn)語法錯誤時候就會自動彈出輸出窗口。
本段程序測試時輸出窗口如下圖所示:
」輸出X[______
1累加到1的值為:1
1累加到2的值為:3
1累加到3的值為:6
1累加到4的值為:10
1累加到5的值為:15
本程序輸出
這段代碼包括如下知識點:
?代碼注釋語法
?變量聲明與賦值辦法
?數(shù)據(jù)類型與默認(rèn)值
?顯式類型指定及其意義
?程序構(gòu)造語句
?基本數(shù)學(xué)運算
?trace語句簡介
當(dāng)前讓咱們一行行地結(jié)識這些代碼:
〃這是我第一次寫腳本
這是一行代碼注釋,編譯器將忽視這行文字。注釋提高了代碼可讀性。單行
注釋由“//”開始,在代碼中呈灰色。如果需要多行注釋,則使用“/*”開始,
用“*/”結(jié)束。一種典型多行注釋如下所示:
*Boat.as*
*輪船類*
*作者:肖剛*
再看本例接下來兩行代碼:
varsum:Number;
varcount:Number=5;
這兩行代碼聲明兩個數(shù)值類型變量sum和count°var是聲明變量核心字,sum
與count是變量名稱。Number指出變量數(shù)據(jù)類型為數(shù)值。第二行代碼聲明變量
count同步賦值一種初始值5。
對于面向?qū)ο蟪绦蛟O(shè)計語言來說,所有數(shù)據(jù)類型都是對象,都是類。Flash
內(nèi)置類可以分為兩種,一種是基元類型,也被成為原始類型,它們普通用來存儲
某些簡樸數(shù)據(jù),有原始類型還具備某些針對所存儲數(shù)據(jù)屬性和辦法。原始類型是
構(gòu)建復(fù)雜類基本元素。另一種是復(fù)雜類,它們是由class核心字定義類,可以以
為是程序構(gòu)件,普通具備成套屬性、辦法和事件。原始類型變量直接存儲數(shù)據(jù),
而復(fù)雜類型變量存儲是類引用。更多關(guān)于類與對象簡介,請參看“Flash內(nèi)置類”
以及“面向?qū)ο蟪绦蛟O(shè)計”章節(jié)。
下表列出了ActionScript慣用原始類型,以及其簡要闡明,它們用法都是大
同小異:
數(shù)據(jù)類型闡明
BooleanBoolean數(shù)據(jù)類型涉及兩個值:true和false。對于此類變量,
其他任何值都是無效。已經(jīng)聲明但尚未初始化布爾變量默認(rèn)
值是falseo
Number此數(shù)據(jù)類型可以表達(dá)整數(shù)、無符號整數(shù)和浮點數(shù)。若要存儲
浮點數(shù),數(shù)字中應(yīng)當(dāng)涉及一種小數(shù)點。若沒有小數(shù)點,數(shù)字
將被存儲為整數(shù)。
int存儲32位有符號整形數(shù)據(jù)。使用int類型有助于運用CPU迅
速解決整形運算能力。(僅合用于ActionScript3.0)
uint存儲32位無符號整數(shù)數(shù)據(jù)。uint類重要用于像素顏色值
(ARGB和RGBA)和int數(shù)據(jù)類型無法較好工作其他狀
況。(僅合用于ActionScript3.0)
StringString數(shù)據(jù)類型表達(dá)16位字符序列,也許涉及字母、數(shù)字
和標(biāo)點符號。字符串存儲為Unicode字符,使用UTF-16格
式。對字符串值操作返回字符串一種新實例。
默認(rèn)值
如果沒有給變量賦值,變量將采用默認(rèn)值。變量默認(rèn)值列表如下:
數(shù)據(jù)類型默認(rèn)值
Booleanfalse
int0
NumberNaN
Objectundefined
Stringnull
uint0
未聲明(與類型注釋*等效)undefined
其他所有類(涉及顧客定義類)undefined
顯式類型指定:
雙引號“:"是類型(type)運算符,用于顯式指定變量數(shù)據(jù)類型,與var核心
字配合使用。它可以指定變量類型、函數(shù)返回類型或函數(shù)參數(shù)類型。在變量聲明
或賦值中使用時,此運算符指定變量類型;在函數(shù)聲明或定義中使用時,此運算
符指定函數(shù)返回類型;在函數(shù)定義中與函數(shù)參數(shù)一起使用時,此運算符指定該參
數(shù)預(yù)期變量類型。
顯式指定數(shù)據(jù)類型不但僅是一種良好編程習(xí)慣,以便避免運營時浮現(xiàn)不匹配
狀況;同步,對于Flash來說,腳本編輯器支持內(nèi)置類和基于這些類變量代碼提
示,從而提高了編程效率。如果需要為指定變量特定對象類型提供代碼提示就要
嚴(yán)格指定變量類型,F(xiàn)lash依照變量類型彈出適當(dāng)提示。代碼提示有兩種:彈出
菜單提示和工具提示樣式語法提示。
彈出菜單提示如下圖所示:
☆Q中▼喜售1打苜甘¥?口0國
1vartoday:Date=newDate();
2trace(today.
?constructor▲
@date
@dateUTC
③day
@dayUTC
@ftillYear
@fijUYearUTC
@getDate
彈出菜單提示
由于在之前顯式聲明了變量today為Date(日期)類型,因此當(dāng)用鍵盤敲入
“today”然后敲入時,編輯器就會自動列出Date類型變量所有屬性和辦法
供咱們選取。這大大提高了編程效率,也減少了由于記憶或者輸入錯誤而引起程
序錯誤。
語法提示如下圖所示:
1vartoday:Date=newDate();
2trace(today.getFullYear(
Date.getFullYearQ:Number
語法提示
語法提示在使用內(nèi)置類成員函數(shù)時浮現(xiàn),如上圖中咱們使用了內(nèi)置類
DategetFullYear函數(shù)時,它會提示咱們這個函數(shù)參數(shù)為空,函數(shù)返回值為Number
類型。
程序基本構(gòu)造:
繼續(xù)看接下去代碼:
for(vari:Number=l;i<=count;i++){
〃內(nèi)部代碼略
這是一種for循環(huán)構(gòu)造。它原則格式為:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3){
內(nèi)嵌語句
)
它執(zhí)行過程如下:
(1)求解表達(dá)式1
(2)求解表達(dá)式2,若其值為真(true),則執(zhí)行內(nèi)嵌語句,若為假(false),
則轉(zhuǎn)到第(5)步
(3)求解表達(dá)式3
(4)轉(zhuǎn)回上面第(2)步繼續(xù)執(zhí)行
(5)循環(huán)結(jié)束,執(zhí)行for循環(huán)后來過程
使用流程圖來表達(dá)話,for循環(huán)構(gòu)造執(zhí)行如下圖所示:
true
內(nèi)嵌語句false
表達(dá)式3
(結(jié)束
for循環(huán)構(gòu)造
雖然表達(dá)式1到表達(dá)式3可以是任意單條語句,但是最慣用是它們分別表達(dá)
循環(huán)變量賦初始值,循環(huán)條件,循環(huán)變量增值,例如本例代碼。
普通計算機程序總是由若干條語句構(gòu)成,從執(zhí)行方式上看,從第一條語句到
最后一條語句完全按順序執(zhí)行,是簡樸順序構(gòu)造;若在程序執(zhí)行過程當(dāng)中,依照
顧客輸入或中間成果去執(zhí)行若干不同任務(wù)則為選取構(gòu)造;如果在程序某處,需要
依照某項條件重復(fù)地執(zhí)行某項任務(wù)若干次或直到滿足或不滿足某條件為止,這就
構(gòu)成循環(huán)構(gòu)造。順序構(gòu)造、循環(huán)構(gòu)造、選取構(gòu)造構(gòu)成了構(gòu)造化程序設(shè)計三個基本
單元,而眾多基本單元構(gòu)成龐大程序。
順序構(gòu)造流程圖如下所示:
(開始)
表達(dá)式]
表達(dá)式2
表達(dá)式3
4
(結(jié)束)
順序構(gòu)造
典型選取構(gòu)造流程圖如下所示:
典型選取構(gòu)造
按順序編寫語句即為順序構(gòu)造,因此沒有構(gòu)造語句,而循環(huán)構(gòu)造和選取構(gòu)造
分別有各種語句構(gòu)造,這些構(gòu)造如下表所示:
構(gòu)造類型語句以及語法闡明
for(初始值;條件;增值){語先賦初始值,然后判斷條件,為真狀
句}況下執(zhí)行語句,然后增值,完畢一次
循環(huán),接著重新判斷條件,直到條件
為假。
for(變量in對象){語句}順序遍歷對象屬性或數(shù)組中元素,并
循環(huán)構(gòu)造對每個屬性或元素執(zhí)行語句。
while(條件){語句}當(dāng)條件為真時執(zhí)行語句,然后判斷條
件,如果為真,執(zhí)行語句,重新判斷
條件,直到條件為假。
do{語句}while(條件);先執(zhí)行語句,然后判斷條件,如果為
真,繼續(xù)執(zhí)行語句。
if(條件){語句}判斷條件,如果為真,則執(zhí)行語句。
if(條件){語句1}判斷條件,如果為真,執(zhí)行語句1,
else{語句2}否則,執(zhí)行語句2。
if(條件1){語句1}判斷條件1,如果為真,則執(zhí)行語句
elseif(條件2){語句2}b否則如果條件2為真,則執(zhí)行語
句2。
選取構(gòu)造switch(變量){
多分支選取構(gòu)造。比較變量值,如果
case值1:語句1為值1,則執(zhí)行語句1以及后來語句,
如果為值n,則執(zhí)行語句n以及后來
case值n:語句n語句。如果只想執(zhí)行某一分支語句
[default:語句]n,則在語句n最后應(yīng)加break;語句。
)
注:如果讀者沒有構(gòu)造化程序設(shè)計基本,可以參照Flash腳本協(xié)助,打開Flash
程序,選取【協(xié)助】|【Flash協(xié)助】或者按F1就可以打開Flash協(xié)助面板。可以
在目錄中尋找或者直接搜索來找到要學(xué)習(xí)內(nèi)容。任何軟件,它協(xié)助文獻(xiàn)就是最佳
教材?;蛘咦x者也可以找任何一本編程基本書籍,翻看之后即會明白。
更多語句、核心字和指令,可以參照Flash協(xié)助文獻(xiàn),其位置如下圖所示:
日囿Actionscript3.0語言和組件參考
?D全部類
EQ全部包
B?語言元素
國□全局常量
?□全局函數(shù)
|EO運算符
口但語句、關(guān)鍵字和指令
E...(rest)parameter
pEAS3
Sbreak
i-Elcase
E=1a
算術(shù)運算:
再看本例接下來一行代碼:
sum=i*(i+l)/2;
這行代碼作用是將1?i整數(shù)數(shù)字累加成果放在sum變量中。它使用了各種
算術(shù)運算符以及賦值運算符“=”。
事實上,可以將這上行代碼用一種for循環(huán)來表達(dá)。
sum=0;
for(varj:Number=l;j<=i;j++){
sum=sum+j;
)
但這明顯增長了代碼復(fù)雜度。使用累加公式:*=她±11則代碼變簡樸,執(zhí)
國2
行效率固然就提高了。游戲中經(jīng)常需要使得運動滿足各種物理運動規(guī)律,這些規(guī)
律均有公式可循,附錄中給出了某些慣用數(shù)學(xué)與物理現(xiàn)象公式以供參照。
下表是ActionScript算術(shù)運算符:
運算符闡明
=賦值運算符
?:條件運算符
+相加
-相減
*相乘
/相除
%取余
++自加1
-自減1
()小括號
和代數(shù)運算同樣,程序中運算符也具備優(yōu)先級,程序總是先執(zhí)行優(yōu)先級最高
運算。上表中,運算符優(yōu)先級正好從低到高排列(有相似優(yōu)先級,如加法“+”
和減法優(yōu)先級是同樣。事實上,程序中算計運算優(yōu)先級和中小學(xué)算術(shù)運算
優(yōu)先級是一致,因此非常好理解。
跟蹤調(diào)試函數(shù)trace:
再看本例接下來一行代碼:
trace("l累加到"+i+"值為:"+sum);
trace是一種跟蹤調(diào)試函數(shù),它可以在輸出窗口中一字符串方式輸出trace函
數(shù)參數(shù),每條trace語句輸出一行字符串。trace語句可以有一種或者各種參數(shù),
參數(shù)類型可以是任意,事實上,它將條用參數(shù)對象toString辦法,輸出對象字符
串表達(dá)方式。
本例中使用了字符串連接符“+”將各種字符串連接成一種字符串作為trace
函數(shù)參數(shù)。運算符“+”兩邊都是數(shù)字時候表達(dá)加法運算,但是如果兩邊有一種
是字符串,則表達(dá)字符串連接運算。
trace語句是調(diào)試程序好幫手。它可以輸出某些運營時信息以便檢測程序執(zhí)行
和發(fā)現(xiàn)程序錯誤。trace語句在發(fā)布swf文獻(xiàn)中不起作用,不會對最后成果導(dǎo)致
影響。如果想在調(diào)試過程中暫時不輸出trace成果,那么在【文獻(xiàn)】|【發(fā)布設(shè)立】
Flash頁中勾選“省略trace動作”即可。如下圖所示:
選項:廠生成大小報告也)
r防止導(dǎo)入任)
17省略trace動作復(fù))
廠允許,
F壓縮:
trace輸出開關(guān)
在接下來例子中,咱們還將多次使用到trace語句,用來查看程序執(zhí)行中間成果
以及最后成果。涉及在游戲?qū)嵗a中也也許保存著trace語句,那是調(diào)試游戲
時留下,對最后程序沒有影響,也不必刪除。
2)第二段示例代碼
程序闡明:
建立一種4X6二維數(shù)組,每個數(shù)組元素保存一種0?10隨機整數(shù),然后輸出這
個數(shù)組。
新建Flash文檔,輸入如下代碼:
〃定義一維數(shù)組
varmyArray:Array=newArray(4);
for(vari=0;i<4;i++){
〃一維數(shù)組每個元素為一種新一維數(shù)組
myArray[i]=newArray(6);
for(varj=0;j<6;j++){
〃給數(shù)組元素賦隨機值
myArray[i][j]=int(Math.random()*10);
)-
〃輸出一維數(shù)組myArray[i]
trace(myArray[i]);
)
按Ctrl+Enter測試影片,則輸出這個二維數(shù)組值。某次輸出如下:
3,8,7,4,0,4
0,6,0,1,1,8
6,0,6,7,5,0
1,9,8,5,6,4
這段代碼包括如下知識點:
?數(shù)組對象以及多維數(shù)組使用
?嵌套循環(huán)
?內(nèi)建數(shù)學(xué)類Math使用
?數(shù)據(jù)類型轉(zhuǎn)換
?編譯器嚴(yán)謹(jǐn)模式與非嚴(yán)謹(jǐn)模式
當(dāng)前來解釋這些代碼,先看第一行代碼:
varmyArray:Array=newArray(4);
這里聲明了一種Array類型變量myArray,并用new核心字創(chuàng)立這個Array
對象實例,初始化其長度為4oArray是一種用來表達(dá)一維數(shù)組數(shù)據(jù)類型,它可
以存儲任意類型數(shù)據(jù)或?qū)ο蟆?/p>
數(shù)組是游戲程序中頻繁使用到一種數(shù)據(jù)類型。用變量名稱引用數(shù)組對象,訪
問數(shù)組每個元素則使用下標(biāo)運算符“口”,下標(biāo)從0開始編號。假設(shè)數(shù)組元素存
儲是另一種數(shù)組,那么就構(gòu)成了二維數(shù)組,以此類推。多維數(shù)組訪問采用各種下
標(biāo)運算符即可。Array是一種復(fù)雜對象,必要用new核心字創(chuàng)立它實例,否則聲
明變量無法訪問,由于ActionScript要通過new核心字給復(fù)雜對象在內(nèi)存中開辟
一種空間,存儲這個對象之用。
也可以創(chuàng)立一種空數(shù)組對象,或者創(chuàng)立數(shù)組對象同步給數(shù)組賦值。如下代碼
所示:
〃創(chuàng)立一種空數(shù)組
varmyArray1:Array=newArray();
〃創(chuàng)立一種有三個元素數(shù)組,元素值分別為1,2,3
varmyArray2:Array=newArray(l,2,3);
數(shù)組對象不但僅為咱們提供了存儲數(shù)組數(shù)據(jù)構(gòu)造,同步還提供了某些基于數(shù)
組屬性和操作函數(shù)等,例如數(shù)組長度、給數(shù)組元素排序等等。這里不一一舉例闡
明,而僅以列表方式給出數(shù)組對象Array慣用成員:
成員闡明
length屬性,表達(dá)數(shù)組中元素數(shù)量非負(fù)整數(shù)。
Array(numElements:int=0)容許創(chuàng)立指定元素數(shù)量數(shù)組,默以為0。
Array(...values)容許創(chuàng)立包括指定元素數(shù)組。
concat(...args):Array將參數(shù)中指定元素(組)附加到數(shù)組中,形成新數(shù)
組。
forEach(callback:Function,對數(shù)組中每一項執(zhí)行函數(shù)。
thisObject:*=null):void
pop():Object刪除數(shù)組中最后一種元素,并返回該元素值。
push(...args):uint將一種或各種元素添加到數(shù)組結(jié)尾,并返回該數(shù)組
新長度。
reverse():Array倒轉(zhuǎn)數(shù)組順序。
shift():Object刪除數(shù)組中第一種元素,并返回該元素。
slice(startlndex:int=0,返回由原始數(shù)組中某一范疇元素構(gòu)成新數(shù)組,而不
endindex:int=16777215修改原始數(shù)組。
):Array
some(callback:Function,對數(shù)組中每一項執(zhí)行測試函數(shù),直到獲得返回true
thisObject:*=null):Boolean項。
sort(...args):Array對數(shù)組中元素進行排序。
splice(startlndex:int,給數(shù)組添加元素以及從數(shù)組中刪除元素。
deleteCount:uint,
...values):Array
unshift(...args):uint將一種或各種元素添加到數(shù)組開頭,并返回該數(shù)組
新長度。
類成員用法為:
變量名.成員名
如果成員為一函數(shù),則需要加括號“()”,如果函數(shù)有參數(shù),則放在括號里面,
各種參數(shù)用逗號隔開。
Array對象不但有以上這些成員,尚有某些被稱為靜態(tài)常數(shù)成員。所謂靜態(tài)
成員,是指使用類名引用而不是類實例名引用成員。靜態(tài)成員普通用于輔助此類
有關(guān)某些操作。例如Array.NUMERIC就是一種Array類靜態(tài)屬性(也稱為常數(shù)),
在對數(shù)進行排序時候用來表達(dá)按數(shù)值大小順序排序而不是字符串編碼順序排序。
提示:本書中有許多知識列表,為了節(jié)約篇幅,這些列表普通都
是通過精簡,剔除了游戲程序中不用或者很少使用到項。讀者若
想理解這些被精簡項,可以參照Flash協(xié)助文獻(xiàn)。
嵌套循環(huán):
再看看接下來一段代碼:
for(vari=0;i<4;i++){
〃一維數(shù)組每個元素為一種新一維數(shù)組
myArray[i]=newArray(6);
for(varj=0;j<6;j++){
〃給數(shù)組元素賦隨機值
myArray[i][j]=int(Math.random()*9);
)
)
這段代碼構(gòu)造為嵌套循環(huán)構(gòu)造。第一層循環(huán)給myArray數(shù)組每一種元素賦值
一種新數(shù)組,第二層循環(huán)為myArray數(shù)組每個元素所示數(shù)組每個元素賦隨機初
始值。這段代碼用流程圖表達(dá)如下:
嵌套循環(huán)
上圖中,內(nèi)部循環(huán)構(gòu)造可以看作是一種簡樸表達(dá)式,它與其前一條語句構(gòu)成
順序構(gòu)造,而這個順序構(gòu)造又可以看作是一種簡樸表達(dá)式,而成為外部循環(huán)構(gòu)造
內(nèi)嵌表達(dá)式。一種完整程序,是有著大量順序構(gòu)造、選取構(gòu)造和循環(huán)構(gòu)造嵌套、
組合復(fù)合體。純熟使用構(gòu)造化程序設(shè)計思想是編寫復(fù)雜程序基本。
Math類:
這段代碼還用到了Flash內(nèi)建數(shù)學(xué)類Math一種靜態(tài)辦法:random(),它作用
是生成一種0?1之間隨機小數(shù)。Math是Flash內(nèi)嵌數(shù)學(xué)計算輔助類,開發(fā)游戲
經(jīng)常要和這個類打交道。它是一種靜態(tài)類,包括某些靜態(tài)函數(shù)和靜態(tài)屬性,以提
供慣用數(shù)學(xué)辦法和數(shù)學(xué)常數(shù),在程序任何地方都可以調(diào)用這些成員。例如表達(dá)圓
周率JI常數(shù)為Math.PL下面這行代碼計算面積為area圓半徑:
r=Math.sqrt(area/Math.PI);
下表列出了Math對象某些常數(shù)。
常數(shù)闡明
E代表自然對數(shù)底數(shù)學(xué)常數(shù),表達(dá)為eo
LN10代表10自然對數(shù)數(shù)學(xué)常數(shù),其近似值為2.046o
LN2代表2自然對數(shù)數(shù)學(xué)常數(shù),其近似值為0.69353。
PI代表一種圓周長與其直徑比值數(shù)學(xué)常數(shù),其近似值
為3.9793o
SQRT1_2代表1/2平方根數(shù)學(xué)常數(shù),其近似值為0.5476。
SQRT2代表2平方根數(shù)學(xué)常數(shù),其近似值為1.40951。
Math還包括了某些數(shù)學(xué)函數(shù)。在游戲編程中將常慣用到這些辦法。
下表列出了Math對象某些數(shù)學(xué)函數(shù):
函數(shù)闡明
abs(x)返回由參數(shù)X指定數(shù)字絕對值。
acos(x)返回由參數(shù)X指定數(shù)字反余弦值。
asin(x)返回由參數(shù)X指定數(shù)字反正弦值。
返回角度值,該角度正切值已由參數(shù)tangent指
atan(tangent)
定。
cos(x)返回指定角度余弦值。
exp(x)返回自然對數(shù)底X次基值。
log(x)返回參數(shù)X自然對數(shù)。
pow(x,y)計算并返回xy次累。
random()返回一種偽隨機數(shù)n,其中0<=n<l。
將參數(shù)x值向上或向下舍入為最接近整數(shù)并返
round(x)
回該值。
sin(x)以弧度為單位計算并返回指定角度正弦值。
sqrt(x)計算并返回指定數(shù)字平方根。
tan(x)計算并返回指定角度正切值。
注:上表中所有三角函數(shù)和反三角函數(shù)都是以弧度制為單位。Math
完整常數(shù)和辦法請參看腳本提示,或者查看Flash協(xié)助文獻(xiàn)。
類型轉(zhuǎn)換
這段代碼中,在給二維數(shù)組每個元素賦值此前,先將隨機數(shù)進行了強制類型
轉(zhuǎn)換:int(),它作用是將隨機生成小數(shù)轉(zhuǎn)換成整數(shù)。
將某種類型數(shù)據(jù)(對象)轉(zhuǎn)換為其他類型數(shù)據(jù)(對象)時,就說發(fā)生了類型
轉(zhuǎn)換。類型轉(zhuǎn)換有兩種:一種是隱式轉(zhuǎn)換,另一種是顯式轉(zhuǎn)換。
隱式轉(zhuǎn)換又稱為強制轉(zhuǎn)換,是代碼中沒有批示卻事實上進行了類型轉(zhuǎn)換,在
運營時由FlashPlayer執(zhí)行。隱式轉(zhuǎn)換發(fā)生在如下狀況中:
?在賦值語句中
?在將值作為函數(shù)參數(shù)傳遞時
?在從函數(shù)中返回值時
?在使用某些運算符(如加法運算符(+))表達(dá)式中
顯式轉(zhuǎn)換由代碼批示編譯器將一種數(shù)據(jù)類型變量視為屬于另一種數(shù)據(jù)類型
時發(fā)生。語法為:
目的類型(被轉(zhuǎn)換對象)
例如:
varquantityField:String="3";
varquantity:int=int(quantityField);〃顯式轉(zhuǎn)換
不論是顯式轉(zhuǎn)換還是隱式轉(zhuǎn)換,其內(nèi)部算法都是同樣。類型轉(zhuǎn)換之后,也許
會發(fā)生值變化。例如Number類型轉(zhuǎn)換成int類型,則會將小數(shù)點背面數(shù)值截斷,
將數(shù)值類型轉(zhuǎn)換成Boolean類型時,非0值轉(zhuǎn)換成true,而0轉(zhuǎn)換成falseo如果
轉(zhuǎn)換目的類型是復(fù)雜類,則被轉(zhuǎn)換對象應(yīng)當(dāng)是有關(guān)類型,有關(guān)類型指具備繼承關(guān)
系類型。所有復(fù)雜類都繼承自O(shè)bject類,因此所有復(fù)雜類都可以轉(zhuǎn)換為Object
類。MovieClip類繼承自Sprite類,因此MovieClip類可以轉(zhuǎn)換成Sprite類,但
是Sprite類不能轉(zhuǎn)換成MovieClip類,由于MovieClip類不是Sprite類有關(guān)類型。
Date類與MovieClip類之間互不繼承,因此它們之間不能互相轉(zhuǎn)換。
在類型轉(zhuǎn)換中如果浮現(xiàn)類型不匹配,則會浮現(xiàn)錯誤。如果編譯器為嚴(yán)謹(jǐn)模式,
則在編譯時候就會彈出編譯錯誤,程序無法編譯完畢,但是如果是原則模式,則
會在程序運營到類型匹配錯誤時候才彈出錯誤。當(dāng)程序比較龐大時,越早發(fā)現(xiàn)錯
誤越好,因此程序員都傾向于使用嚴(yán)謹(jǐn)模式。
修改嚴(yán)謹(jǐn)模式辦法為:選取【文獻(xiàn)】|【發(fā)布設(shè)立】,然后選取“Flash”標(biāo)簽,
在ActionScript版本下來框中選取"ActionScript3.0”,然后點擊旁邊“設(shè)立"按
鈕,彈出“ActionScript3.0設(shè)立”對話框。如下圖所示:
ActionScript3.0設(shè)置
文檔類:『
導(dǎo)出幀中的類:
錯誤:17沔潼模式;
17警告稹會
嚴(yán)謹(jǐn)模式設(shè)立
勾選“嚴(yán)謹(jǐn)模式”即可。新建AS3文檔默認(rèn)使用嚴(yán)謹(jǐn)模式,但AS2無嚴(yán)謹(jǐn)
模式概念,如果您使用是由AS2文檔轉(zhuǎn)換過來AS3文檔,則默認(rèn)使用非嚴(yán)謹(jǐn)模
式。止匕外,嚴(yán)謹(jǐn)模式還規(guī)定變量都要先聲明才干使用,如果在發(fā)布設(shè)立中取消了
嚴(yán)謹(jǐn)模式,則Flash可以不顯式聲明變量(即不使用var核心字聲明變量)。如
varcount:Number=5;
可以寫成
count=5;
兩者效果是同樣,F(xiàn)lash在第一次使用這個變量時候自動定義這個變量,并且依
照所賦值類型擬定變量數(shù)據(jù)類型。但有經(jīng)驗程序員都明白,先聲明后使用嚴(yán)謹(jǐn)編
程習(xí)慣,對減少編程錯誤、維護復(fù)雜程序等方面是非常故意義做法,當(dāng)前絕大多
數(shù)編程語言都逐漸摒棄了非嚴(yán)謹(jǐn)模式,AS3因向下兼容需要而保存了這個選項。
3)第三段示例代碼
程序闡明:
尋找一種1000以內(nèi),能被7整除并且二進制數(shù)第四位是0第五位是1數(shù)字。
新建Flash文檔,輸入如下代碼:
vartestNumber;
varcount=0;
do{
count++;
〃隨機產(chǎn)生一種1?1000之間整數(shù)
testNumber=Math.round(Math.random()*1000);
}while(!correctNumber(testNumber));
trace("找到一種能被7整除并且二進制數(shù)第四位是0第五位是1數(shù)
字:\r"+testNumber);
trace("總共循環(huán)了\""+count+"\"次");
functioncorrectNumber(para1:Number):Boolean{
if(paral%7==0&&(paral?3)%4==2){
returntrue;
}else{
returnfalse;
)
)
按Ctrl+Enter測試影片。會得到如下輸出成果:
找到一種能被7整除并且二進制數(shù)第四位是0第五位是1數(shù)字:
693
總共循環(huán)了"5"次
代碼闡明:
這段代碼執(zhí)行過程是先隨機生成一種1-1000整數(shù),然后判斷它與否滿足給
出條件,如果不是,那么重新生成一種隨機數(shù),重新判斷,直到找到一種滿足條
件數(shù)字,最后輸出這個數(shù)字以及循環(huán)次數(shù)。
這段代碼包括如下知識點:
?自定義函數(shù)
?邏輯運算符
?復(fù)合邏輯關(guān)系
?關(guān)系運算符
?位運算符
?轉(zhuǎn)義字符
當(dāng)前來解釋一下其中某些核心代碼:
testNumber=Math.round(Math.random()*1000);
這里再次使用了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水庫承包垂釣合同范例
- 投資運營收費合同范例
- 天津濱海職業(yè)學(xué)院《美術(shù)課程標(biāo)準(zhǔn)與教材研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 物流工期延期合同范例
- 公司融資合同范例餐飲
- 格式加工合同范例
- 產(chǎn)品打版合同范例
- N3層級護士三基+臨床實踐練習(xí)題(含參考答案)
- 2025年張掖考從業(yè)資格證貨運試題
- 充值會員轉(zhuǎn)讓合同范例
- GB/T 20833-2007旋轉(zhuǎn)電機定子線棒及繞組局部放電的測量方法及評定導(dǎo)則
- 2023年企業(yè)法律顧問服務(wù)進度月報
- GA/T 1133-2014基于視頻圖像的車輛行駛速度技術(shù)鑒定
- 食品用酶制劑相關(guān)法律法規(guī)及安全標(biāo)準(zhǔn)
- 研發(fā)費用加計扣除與高新技術(shù)企業(yè)政策解析課件
- 2023譯林版新教材高一英語必修一全冊單詞默寫
- 離婚應(yīng)訴書范文(精選十八篇)
- 塑料制品廠安全生產(chǎn)事故綜合應(yīng)急預(yù)案
- 水運工程交工質(zhì)量核驗申請書、意見、內(nèi)容表和竣工質(zhì)量鑒定申請、報告、復(fù)測內(nèi)容
- 乳腺疾病診療規(guī)范診療指南2022版
- 品質(zhì)部-8D培訓(xùn)資料
評論
0/150
提交評論