2021年Flash編程基礎(chǔ)言簡意賅適合新人沒有基礎(chǔ)也能看懂啊_第1頁
2021年Flash編程基礎(chǔ)言簡意賅適合新人沒有基礎(chǔ)也能看懂啊_第2頁
2021年Flash編程基礎(chǔ)言簡意賅適合新人沒有基礎(chǔ)也能看懂啊_第3頁
2021年Flash編程基礎(chǔ)言簡意賅適合新人沒有基礎(chǔ)也能看懂啊_第4頁
2021年Flash編程基礎(chǔ)言簡意賅適合新人沒有基礎(chǔ)也能看懂啊_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論