FLASH上傳空間 2009-09-22 07:51:36 閱讀13 評(píng)論0 字號(hào):大中小
引用
平安如意 的 FLASH動(dòng)作腳本基本知識(shí)FLASH動(dòng)作腳本基本知識(shí)
第一講 動(dòng)作腳本基本知識(shí)
一、 動(dòng)作腳本概念動(dòng)作腳本就是 Flash MX 為我們提供的各種命令,運(yùn)算符以及對(duì)象,使用動(dòng)作腳本時(shí)必須將其附加在按鈕、影片剪輯或者幀上,從而使單擊按鈕和按下鍵盤鍵之類的事件時(shí)觸發(fā)這些腳本。以便實(shí)現(xiàn)所需的交互性。
學(xué)習(xí)動(dòng)作腳本的最佳方法是對(duì)其進(jìn)行實(shí)際操作,即使對(duì)動(dòng)作腳本沒(méi)有完全理解,也不影響對(duì)其控制功能的使用,一樣能夠?qū)崿F(xiàn)簡(jiǎn)單的交互性操作,經(jīng)過(guò)一段時(shí)間的實(shí)踐對(duì)基本的動(dòng)作(如 play 和 stop)運(yùn)用自如,對(duì)動(dòng)作腳本略知一二后,就可以開始學(xué)習(xí)關(guān)于此語(yǔ)言的更多知識(shí)了。
二 、動(dòng)作腳本面板當(dāng)我們?yōu)閹?按鈕或影片剪輯指定動(dòng)作時(shí)必須使用動(dòng)作面板,動(dòng)作面板的結(jié)構(gòu)如示例1.1
三、基本動(dòng)作控制命令
1 停止命令格式; stop();
說(shuō)明動(dòng)作;停止播放頭的移動(dòng)
2 播放命令
格式;play();
說(shuō)明動(dòng)作;在時(shí)間軸中向前移動(dòng)播放頭。
3 轉(zhuǎn)移命令gotoAndPlay(scene, frame)
參數(shù)scene 播放頭將轉(zhuǎn)到的場(chǎng)景的名稱。frame 播放頭將轉(zhuǎn)到的幀的編號(hào)或標(biāo)簽。
動(dòng)作;將播放頭轉(zhuǎn)到場(chǎng)景中指定的幀并從該幀開始播放。如果未指定場(chǎng)景,則播放頭將轉(zhuǎn)到當(dāng)前場(chǎng)景中的指定幀。以上三個(gè)命令是動(dòng)作腳本中最常用的基本動(dòng)作,它們通過(guò)對(duì)時(shí)間軸上播放頭的控制實(shí)現(xiàn)的特定功能,在對(duì)播放頭實(shí)施控制時(shí)一般有多種方法可供選擇,但最常用的是在坐標(biāo)系內(nèi)部實(shí)施控制和在不同坐標(biāo)系之間實(shí)施控制,前者直接使用命令就可以實(shí)現(xiàn)目的(見示例1.2和示例1.3),后者則必須使用目標(biāo)路徑才能實(shí)現(xiàn)控制功能(見示例1.4和示例1.5)
四 按鈕
使用按鈕元件可以在影片中創(chuàng)建響應(yīng)鼠標(biāo)點(diǎn)擊、滑過(guò)或其它動(dòng)作的交互式按鈕??梢远x與各種按鈕狀態(tài)關(guān)聯(lián)的圖形,然后指定按鈕實(shí)例的動(dòng)作。請(qǐng)參閱為按鈕指定動(dòng)作。在單擊或滑過(guò)按鈕時(shí)要讓影片執(zhí)行某個(gè)動(dòng)作。您必須將動(dòng)作指定給按鈕的一個(gè)實(shí)例;該元件的其它實(shí)例不受影響。
當(dāng)為按鈕指定動(dòng)作時(shí),必須將動(dòng)作嵌套在 on 處理函數(shù)中,并指定觸發(fā)該動(dòng)作的鼠標(biāo)或鍵盤事件。當(dāng)在標(biāo)準(zhǔn)模式下為按鈕指定動(dòng)作時(shí),會(huì)自動(dòng)插入 on 處理函數(shù),然后您可從列表中選擇一個(gè)事件。您也可用動(dòng)作腳本 Button 對(duì)象的事件在發(fā)生按鈕事件時(shí)執(zhí)行腳本。************************************************
注釋1:命令中的圓括號(hào)(1) 圓括號(hào)一般用來(lái)放置函數(shù)的參數(shù)以便傳遞這些參數(shù),我們所學(xué)習(xí)的各種命令,也都可以稱為函數(shù).
例如gotoandplay(2);
數(shù)字"2"只有放在圓括號(hào)內(nèi),才能進(jìn)行傳遞(2)表示運(yùn)算符優(yōu)先級(jí)當(dāng)在同一語(yǔ)句中使用兩個(gè)或多個(gè)運(yùn)算符時(shí),一些運(yùn)算符會(huì)優(yōu)先于其它的運(yùn)算符。動(dòng)作腳本按照一個(gè)精確的層次來(lái)確定首先執(zhí)行那個(gè)運(yùn)算符。例如,乘法總是先于加法執(zhí)行;但是,括號(hào)中的項(xiàng)目會(huì)優(yōu)先于乘法。因此,如果沒(méi)有括號(hào),動(dòng)作腳本會(huì)在下面的示例中首先執(zhí)行乘法:
to = 2 + 4 * 3;
結(jié)果為 14。
但是當(dāng)加法運(yùn)算在括號(hào)內(nèi)時(shí),動(dòng)作腳本會(huì)首先執(zhí)行加法:
total = (2 + 4) * 3;
結(jié)果為 18。
(3) 簡(jiǎn)化語(yǔ)句例如使用括號(hào)評(píng)估點(diǎn)語(yǔ)法中點(diǎn)左側(cè)的表達(dá)式。例如,在下面的語(yǔ)句中,括號(hào)會(huì)使 new Color(this) 評(píng)估并創(chuàng)建一個(gè)新的 Color 對(duì)象:
on
ClipEvent(enterFrame) { (new Color(this)).setRGB(0xffffff);
}
如果不使用括號(hào),則需要添加一個(gè)語(yǔ)句來(lái)評(píng)估該表達(dá)式:
on
ClipEvent(enterFrame) { myColor = new Color(this);
myColor.setRGB(0xffffff);
}
注釋2 分號(hào)" ; "
動(dòng)作腳本語(yǔ)句是用分號(hào)結(jié)束的。例如,下面的語(yǔ)句是用分號(hào)結(jié)束的:
_root.getDay();
如果省略了結(jié)束分號(hào),F(xiàn)lash 仍然能夠成功地編譯腳本。但是,使用分號(hào)是一個(gè)很好的腳本撰寫習(xí)慣。
******************************************************
小節(jié)本章重點(diǎn):是學(xué)會(huì)如何使用基本命令和按鈕控制影片剪輯1命令可以寫在時(shí)間軸上2命令可以附加在按鈕上3按鈕有一些on事件關(guān)于動(dòng)作面板和目標(biāo)路徑大家可以稍作了解,以后我們會(huì)在實(shí)例中經(jīng)常講
第二講 數(shù)據(jù)
一 數(shù)據(jù)
我們思考一下計(jì)算機(jī)程序所作的一些事情,財(cái)務(wù)管理程序能夠打印帳單,字處理程序能夠輸入和編輯文本,視頻處理程序能夠讓我們觀看影片和玩各種游戲,等等數(shù)不勝數(shù),但所有程序都有一個(gè)共同特點(diǎn);他們都需要處理數(shù)據(jù).flash中根據(jù)數(shù)據(jù)的處理方法的不同,對(duì)數(shù)據(jù)進(jìn)行了分類,他們是;數(shù)值類型,字符串類型,布爾類型,對(duì)象類型,影片剪輯類型,未定義類型共六種.
計(jì)算機(jī)在處理這些數(shù)據(jù)的時(shí)候,必需使用某種方法存儲(chǔ)這些數(shù)據(jù),變量就是服務(wù)于該目的,所以我們常說(shuō)"變量是保存信息的容器",下面我們先看看幾個(gè)最常用的數(shù)據(jù)
1 number (數(shù)值)類型
數(shù)值型數(shù)據(jù)指的是我們常用的數(shù)字??梢允褂盟阈g(shù)運(yùn)算符加 (+)、減 (-)、乘 (*)、除 (/)、求模 (%)、遞增 (++) 和遞減 (--) 來(lái)處理。也可使用內(nèi)置的 Math 對(duì)象的方法處理數(shù)字.使用Number()可以指定數(shù)據(jù)為數(shù)值類型.Number();又叫數(shù)值轉(zhuǎn)換函數(shù).
Number(...);
圓括號(hào)中放入要轉(zhuǎn)換為數(shù)字的表達(dá)式
示例2.11
a=2;
b=10;
trace(a-b);
trace(math.abs(a-b));
c=Number(a)+Number(b);//指定a,b為數(shù)值型數(shù)據(jù),然后求和
2 string(字符串)類型
字符串是諸如字母、數(shù)字和標(biāo)點(diǎn)符號(hào)等字符的序列。將字符串放在雙引號(hào)之間,可以在動(dòng)作腳本語(yǔ)句中輸入它們。字符串被當(dāng)做字符,而不是變量進(jìn)行處理。使用String()可以指定數(shù)據(jù)為字符串類型也可以將數(shù)值類型的數(shù)據(jù)轉(zhuǎn)換為字符串型數(shù)據(jù).String();又叫字符串轉(zhuǎn)換函數(shù).
String(...);
圓括號(hào)內(nèi)為要轉(zhuǎn)換為字符串的表達(dá)式。
如; c=String(a)+String(b); //指定a,b為字符串型數(shù)據(jù).然后將a,b連接起來(lái)
例如,在下面的語(yǔ)句中,"L7" 是一個(gè)字符串:
a1 = "L7";
可以使用加法 (+) 運(yùn)算符連接 或合并兩個(gè)字符串。
例如
a1="mc"+"2";
trace(a1);
雖然動(dòng)作腳本在引用變量、實(shí)例名稱和幀標(biāo)簽時(shí)不區(qū)分大小寫,但是文本字符串是區(qū)分大小寫的。例如,下面的兩個(gè)語(yǔ)句會(huì)在指定的文本字段變量中放置不同的文本,這是因?yàn)?"Hello" 和 "HELLO" 是文本字符串。
invoice.display = "Hello";
invoice.display = "HELLO";
要在字符串中包含引號(hào),可以在它前面放置一個(gè)反斜杠字符 (\)。要換行時(shí)加入一個(gè)(\n)就可以了,這稱為字符轉(zhuǎn)義。
示例2.12換行和插入" "號(hào)
on (release) {
dd = "中國(guó)老三屆是我flash入門的地方,\n我的第一個(gè)作業(yè)是\"運(yùn)動(dòng)的光碟\".";
trace(dd);
}
3 boolean(布爾)類型
布爾值是 true 或 false 。動(dòng)作腳本也會(huì)在需要時(shí)將值 true 和 false 轉(zhuǎn)換為 1 和 0。布爾值在進(jìn)行比較以控制腳本流的動(dòng)作腳本語(yǔ)句中經(jīng)常與邏輯運(yùn)算符一起使用。例如,在下面mc中的腳本中,如果變量 a 為 true,變量b也為true則會(huì)播放影片mc:
on
ClipEvent(enterFrame) { if (b == true && a== true){
play();
}}
實(shí)例制作--數(shù)據(jù)觀察
制作步驟
1 選擇文本工具在屬性欄選輸入文本,字號(hào)20,顏色黑,在場(chǎng)景中點(diǎn)擊構(gòu)造一個(gè)輸入文本框,同樣的方法再構(gòu)造一個(gè)文本框,并分別在屬性面板的變量欄把變量命名為a和b
2選擇文本工具在屬性欄選動(dòng)態(tài)文本,字號(hào),顏色同上,在場(chǎng)景中點(diǎn)擊構(gòu)造一個(gè)動(dòng)態(tài)文本框,在屬性面板的變量欄把變量命名為為c,
3選擇文本工具在屬性欄選靜態(tài)文本,在場(chǎng)景中制作"+"和"=",放在兩個(gè)輸入文本之間,其后面放"="號(hào),在"="后放動(dòng)態(tài)文本框,
4在公用庫(kù)中拖出一個(gè)按鈕,把它一個(gè)放在動(dòng)態(tài)文本后面
5在第二幀插入一個(gè)關(guān)鍵幀,
6點(diǎn)擊第一幀,又點(diǎn)擊放在動(dòng)態(tài)文本后面的按鈕,打開動(dòng)作面板輸入一下腳本
on (release) { //按下并釋放;
c=Number(a)+Number(b); //指定a,b為數(shù)值類型的數(shù)據(jù),執(zhí)行加運(yùn)算后存入c中;
}
7點(diǎn)擊第二幀,又點(diǎn)擊放在動(dòng)態(tài)文本后面的按鈕,打開動(dòng)作面板輸入一下腳本
on (release) { //按下并釋放;
c = String(a)+String(b); //指定a,b為字符串類型的數(shù)據(jù),執(zhí)行加運(yùn)算后存入c中;
}
8新建圖層2從庫(kù)中把按鈕拖出兩次,旁邊分別標(biāo)注數(shù)值型和文本型
點(diǎn)擊選中數(shù)值型按鈕寫
on (release) {
gotoAndStop(1);
}
點(diǎn)擊選中文本型按鈕寫
on (release) {
gotoAndStop(2);
}
至此實(shí)例完成.通過(guò)本實(shí)例我們學(xué)會(huì)
1用動(dòng)態(tài)文本顯示數(shù)據(jù),用輸入文本輸入數(shù)據(jù)
2如何指定數(shù)據(jù)類型
3字符串?dāng)?shù)據(jù)加法運(yùn)算是把數(shù)據(jù)進(jìn)行連接,數(shù)值類型是求和
4復(fù)習(xí)按鈕的goto命令
第三講 關(guān)鍵字和變量
一 標(biāo)識(shí)符
flash中標(biāo)識(shí)符是用于表示變量、屬性、對(duì)象、函數(shù)或方法的名稱。它的第一個(gè)字符必須是字母、下劃線 (_) 或美元記號(hào) ($)。其后的字符必須是字母、數(shù)字、下劃線或美元記號(hào)。例如,firstName 是一個(gè)變量的名稱。
二 關(guān)鍵字
關(guān)鍵字是有特殊含義的保留字。例如,var 是用于聲明本地變量的關(guān)鍵字。不能使用關(guān)鍵字作為標(biāo)識(shí)符。例如,var 不是合法的變量名。
flash中定義了一些保留關(guān)鍵字,所謂保留關(guān)鍵字就是flash系統(tǒng)已經(jīng)嚴(yán)格定義了的一類標(biāo)識(shí)符,它們具有固定的含義,不允許再定義或另作它用.flash中的關(guān)鍵字一共有32個(gè),下表列出了所有動(dòng)作腳本關(guān)鍵字.
break
case
class
continue
default
delete
dynamic
else
extends
for
function
get
if
implements
imp
ort in
instanceof
interface
intrinsic
new
private
public
return
set
static
switch
this
typeof
var
void
while
with
下面我們先學(xué)習(xí)兩個(gè)個(gè)關(guān)鍵字if和else
1 關(guān)鍵字 if和else
if是用來(lái)對(duì)條件進(jìn)行計(jì)算并判斷其真假的一個(gè)關(guān)鍵字,使用if構(gòu)成所謂的條件語(yǔ)句,它的應(yīng)用格式為;
if(...) {
mmm
}else{
nnn
}
說(shuō)明
圓括號(hào)中放入條件,這個(gè)條件的計(jì)算結(jié)果為 true 時(shí)就執(zhí)行大括號(hào)中的命令mmm。當(dāng)這個(gè)條件計(jì)算結(jié)果為false時(shí)就執(zhí)行else后面大括號(hào)中的命令nnn,
例如
if(2+3>1){ //計(jì)算并判斷2+3的值是否大于1.如果大于1就輸出一個(gè)"true"值,
gotoandstop(1); //如果判斷結(jié)果為true, 就執(zhí)行g(shù)otoadstop(1),
}else{ //如果判斷結(jié)果為false,就執(zhí)行g(shù)otandstop(2)
gotoandstop(2);
}
程序運(yùn)行時(shí)關(guān)鍵字if首先計(jì)算2+3的值,然后判斷2+3的值是否大于1,如果大于1則執(zhí)行花括號(hào)中的語(yǔ)句,如果不大于1,則不執(zhí)行else后面花括號(hào)中的語(yǔ)句.在實(shí)際應(yīng)用中else有時(shí)被省略,省略后的形式為
if(2+3>1){
gotoandstop(1);
}
三 常量
1在程序運(yùn)行過(guò)程中,其值保持不變的量叫常量,常量的類型有number,string和boolean型,還有一種用標(biāo)識(shí)符表示的常量叫符號(hào)常量.
2 數(shù)值型常量
"中國(guó)" 字符串型常量
true 布爾型常量,代表"真"
false 布爾型常量,代表"假"
null 表示"空值"
newline 表示插入一個(gè)回車換行符號(hào)
undefined表示沒(méi)有被賦值的變量,沒(méi)賦值的變量可以認(rèn)為是常量 ,類似于null
四 變量
變量是保存信息的容器。變量可以存儲(chǔ)任何類型的數(shù)據(jù):數(shù)字、字符串、布爾值、對(duì)象和影片剪輯。要使用變量必需首先把變量附加在某個(gè)位置上(如時(shí)間軸,影片剪輯,函數(shù)體中...),給他起一個(gè)名字,即命名變量,然后還得使用特定符號(hào)對(duì)變量進(jìn)行聲明.變量根據(jù)其使用范圍可以分成全局變量和局部變量,若要測(cè)試變量的值,可以使用 trace() 動(dòng)作,
1 命名變量
變量名稱必須遵守下面的規(guī)則:
它必須是標(biāo)識(shí)符。
它不能是關(guān)鍵字或動(dòng)作腳本文本,例如 true、false、null 或 undefined。
它在其范圍內(nèi)必須是唯一的。
此外,不應(yīng)將動(dòng)作腳本語(yǔ)言中的任何元素用作變量名稱;
2 聲明變量
(1) " = "聲明變量
格式 expr
ession1 = expr ession2 參數(shù)
expr
ession1 變量、數(shù)組元素或?qū)ο髮傩浴?/p> expr
ession2 任何類型的值。 在flash mx中運(yùn)算符 " = " 執(zhí)行賦值操作,判斷兩個(gè)值是否相等使用運(yùn)算符" == ",
示例
下面的示例使用賦值運(yùn)算符將數(shù)字?jǐn)?shù)據(jù)類型賦予變量 x。
x = 5
下面的示例使用賦值運(yùn)算符將字符串?dāng)?shù)據(jù)類型賦予變量 x。
x = "hello"
(2) var聲明本地變量
格式 var varriablenam [= m1] [...,varriablenam [=mi] ]
varriablenam 參數(shù)給出變量名
m1參數(shù)給這個(gè)聲明的變量賦值
示例
var nam1;//變量被聲明但沒(méi)有賦值
var nam2=600;
var nam3="abcd",nam4="efg";//同時(shí)聲明兩個(gè)字符串變量
var mc_a=true;
var m,n,i,j=800;//同時(shí)聲明四個(gè)變量,但只有變量j被賦值
var x;
var y = 1;
var z = 3, w = 4;
var s, t, u = z;
var nam=[1,2,3];
trace(nam[0]);
trace(nam[1]);
trace(nam[2]);
第四講 點(diǎn)語(yǔ)法和算術(shù)運(yùn)算符
一 點(diǎn)語(yǔ)法
在動(dòng)作腳本中,點(diǎn) (.) 用于表明與對(duì)象或影片剪輯相關(guān)聯(lián)的屬性或方法。它還用于標(biāo)識(shí)影片剪輯、變量、函數(shù)或?qū)ο蟮哪繕?biāo)路徑。點(diǎn)語(yǔ)法表達(dá)式以對(duì)象或影片剪輯的名稱開始,后面跟著一個(gè)點(diǎn),最后以要指定的元素結(jié)束。
示例1
_x 屬性表示影片剪輯在舞臺(tái)上的 x 軸位置。表達(dá)式 MC1._x 引用影片剪輯實(shí)例 MC1 的 _x 屬性。
示例2
aa 是 mc11 影片剪輯中設(shè)置的變量,此影片剪輯嵌在影片剪輯 mc1 之中。表達(dá)式 mc1.mc11.aa = true 將實(shí)例 mc11的 aa 變量設(shè)置為 true。
表達(dá)對(duì)象或影片剪輯的方法遵從同樣的模式。例如,MC 實(shí)例的 play 方法在 MC 的時(shí)間軸中移動(dòng)播放頭,如同下面的語(yǔ)句:
MC.play();
注;flash中方法的概念;方法指的是帶有某種動(dòng)作行為的函數(shù)或命令,其特征是在使用時(shí)后面加一個(gè)圓括號(hào),如stop();
點(diǎn)語(yǔ)法還使用兩個(gè)特殊別名,_root 和 _parent。別名 _root 是指主時(shí)間軸。您可以使用 _root 別名創(chuàng)建一個(gè)絕對(duì)目標(biāo)路徑。例如,下面的語(yǔ)句調(diào)用主時(shí)間軸上影片剪輯 mc 中的函數(shù) bu:
_root.mc.bu();
您可以使用別名 _parent 引用當(dāng)前影片剪輯的父級(jí)。也可使用 _parent 創(chuàng)建相對(duì)目標(biāo)路徑。例如,如果影片剪輯 mc11 嵌入影片剪輯 mc1 的內(nèi)部,則寫在實(shí)例 mc11 的如下語(yǔ)句會(huì)指示 mc1 停止:
_parent.stop();
二 目標(biāo)路徑
三 算術(shù)運(yùn)算符
算術(shù)運(yùn)算符用來(lái)執(zhí)行(number)數(shù)值類型的數(shù)據(jù)或表達(dá)式的算術(shù)運(yùn)算操作,
1 " + "運(yùn)算
格式 expr
ession1 + expr ession2 參數(shù) expr
ession1、expr ession2 數(shù)字或字符串。 將數(shù)值表達(dá)式相加或者連接(合并)字符串。如果其中一個(gè)表達(dá)式為字符串,則所有其他表達(dá)式都被轉(zhuǎn)換為字符串,然后連接起來(lái)。兩個(gè)表達(dá)式都為整數(shù)時(shí),和為整數(shù);其中一個(gè)或兩個(gè)表達(dá)式為浮點(diǎn)數(shù)時(shí),和為浮點(diǎn)數(shù)。
示例
(1) trace (2 + 3);
(2) trace (2.5 + 3.25);
(3)
a = 1345;
b = "mc" ;
trace (a+b);
2 " - "運(yùn)算符
減運(yùn)算符用于用于符號(hào)反轉(zhuǎn)或減法運(yùn)算。
否定格式 –expr
ession(符號(hào)反轉(zhuǎn)) 減法格式 expr
ession1 - expr ession2 示例
(1) -(2 + 3);語(yǔ)句將表達(dá)式 2 + 3 的符號(hào)反轉(zhuǎn)。
結(jié)果為 -5。
(2) 5 - 2 ; //語(yǔ)句從整數(shù) 5 中減去整數(shù) 2
結(jié)果為 3,是一個(gè)整數(shù)。
(3) 3.25 - 1.5 //語(yǔ)句從浮點(diǎn)數(shù) 3.25 中減去浮點(diǎn)數(shù) 1.5。
結(jié)果為 1.75,是一個(gè)浮點(diǎn)數(shù)。
3 " * " 運(yùn)算
將兩個(gè)數(shù)值表達(dá)式相乘。
格式 expr
ession1 * expr ession2 示例
(1) 2 * 3 //結(jié)果為 6,是一個(gè)整數(shù)。
(2) 2.0 * 3.1416 //結(jié)果為 6.2832,是一個(gè)浮點(diǎn)數(shù)。
4 "/"運(yùn)算符
格式 expr
ession1 / expr ession2 說(shuō)明 將 expr
ession1 除以 expr ession2。 示例
trace(22.0 / 7.0); //結(jié)果為 3.1429,是一個(gè)浮點(diǎn)數(shù)。
5 "%"按模取余運(yùn)算
格式 expr
ession1 % expr ession2 計(jì)算 expr
ession1 除以 expr ession2 的余數(shù)。如果兩個(gè) expr ession 參數(shù)中有一個(gè)是非數(shù)字值,則模運(yùn)算符嘗試將它們轉(zhuǎn)換為數(shù)字。expr ession 可以是數(shù)字或轉(zhuǎn)換為數(shù)值的字符串。 示例
下面是一個(gè)使用模 (%) 運(yùn)算符的數(shù)字示例。
trace (12 % 5);// returns 2
trace (4.3 % 2.1);// returns approximately 0.1
需要注意的是,當(dāng)被除數(shù)取整數(shù),除數(shù)取2的時(shí)候其余非1即0,這種情況類似于布爾值,有時(shí)可用于邏輯控制,是一個(gè)很有用的特性.
6 ++自增量運(yùn)算
格式 ++expr
ession expr
ession++ 說(shuō)明
運(yùn)算符(算術(shù));將 expr
ession 加 1 的預(yù)先遞增和滯后遞增一元運(yùn)算符。expr ession 可以是變量、數(shù)組元素或?qū)ο髮傩?。此運(yùn)算符的預(yù)先遞增格式 (++expr ession) 將 expr ession 加 1,然后返回結(jié)果。此運(yùn)算符的滯后遞增格式 (expr ession++) 將 expr ession 加 1 并返回 expr ession 的初始值(即加上 1 之前的值)。 示例
(1)預(yù)先遞增
x = 1;
y = ++x;
(2)滯后遞增
x = 1;
y = x++;
(3)
x=1;
y=++x;
trace(x);
trace(y);
(4)
i=1;
j=i++;
trace(i);
trace( j);
5 " - - "運(yùn)算
格式
- -expr
ession expr
ession- - 運(yùn)算符(算術(shù));從 expr
ession 中減 1 的預(yù)先遞減和滯后遞減一元運(yùn)算符。此運(yùn)算符的預(yù)先遞減格式 (--expr ession) 從 expr ession 中減去 1,然后返回結(jié)果。此運(yùn)算符的滯后遞減格式 (expr ession--) 從 expr ession 中減去 1 然后返回 expr ession 的初始值(即減去 1 之前的值)。 示例
(1) 預(yù)先遞減格
x = 3;
y = - -x;
(2)滯后遞減格式
x = 3;
y = x- -
(3)i=2;
i=i-1;
trace(i);
(4)j=2;
j- -;
trace( j);
第五講-賦值運(yùn)算符和mc的屬性
中國(guó)老三屆腳本基礎(chǔ)課教材2004.3.25
一 賦值運(yùn)算符
1 " = "賦值運(yùn)算
格式 expr
ession1 = expr ession2 參數(shù)
expr
ession1 變量、數(shù)組元素或?qū)ο髮傩浴?/p> expr
ession2 任何類型的值。 說(shuō)明
運(yùn)算符;將 expr
ession2(位于右側(cè)的參數(shù))的類型賦予 expr ession1 中的變量、數(shù)組元素或?qū)傩浴?/p> 示例
下面的示例使用賦值運(yùn)算符將數(shù)字?jǐn)?shù)據(jù)類型賦予變量 x。
x = 21;
下面的示例使用賦值運(yùn)算符將字符串?dāng)?shù)據(jù)類型賦予變量 x。
x = "hello";
2 "+="運(yùn)算
格式 ;expr
ession1+=expr ession2 參數(shù);expr
ession1、expr ession2 數(shù)字或字符串。 說(shuō)明
運(yùn)算符(算術(shù)組合賦值);將 expr
ession1 + expr ession2 值賦予 expr ession1。例如,下面兩個(gè)語(yǔ)句的結(jié)果是相同的: x += y;
x = x + y;
此運(yùn)算符也可以執(zhí)行字符串連接運(yùn)算。加法運(yùn)算符 (+) 的所有規(guī)則適用于加法賦值 (+=) 運(yùn)算符。
示例
(1)
x = 5;
y = 10;
x += y;
trace(x);
(2)
x = "My name is "
x += "Gilbert"
trace (x)//My name is Gilbert
3 "-="運(yùn)算
格式;expr
ession1、expr ession2 數(shù)字或計(jì)算結(jié)果為數(shù)字的表達(dá)式 說(shuō)明
運(yùn)算符(算術(shù)組合賦值);將 expr
ession1 -expr ession2 的值賦予 expr ession1。例如,下面兩個(gè)語(yǔ)句是相同的: x -= y;
x = x - y;
字符串表達(dá)式必須轉(zhuǎn)換為數(shù)字,否則返回 NaN。
示例
(1)
x = 5;
y = 10;
x -= y
trace(x);//-5
(2)
x = "5";
y = "10";
x -= y;
trace(x);//-5
(3)
x = "a5";
y = "10";
x -= y;
trace(x);//NaN
4 *=運(yùn)算
格式;expr
ession1 *=expr ession2 說(shuō)明
運(yùn)算符(算術(shù)組合賦值);將 expr
ession1 *expr ession2 的值賦予 expr ession1。例如,下面兩個(gè)表達(dá)式是相同的: x *= y
x = x * y
示例
(1)
x = 5;
y = 10;
trace (x *= y);//50
(2)
i = 5;
x = 4 - 6;
y = i + 2;
trace(x *= y);//-14
5 "/="運(yùn)算
expr
ession1/=expr ession2 參數(shù);expr
ession1、expr ession2 數(shù)字或計(jì)算結(jié)果為數(shù)字的變量。
說(shuō)明
運(yùn)算符(算術(shù)組合賦值);將 expr
ession1/expr ession2 的值賦予 expr ession1。例如,下面兩個(gè)語(yǔ)句是相同的: x /= y
x = x / y
示例
x = 10;
y = 2;
x /= y;
6 "%="運(yùn)算
格式;expr
ession1%=expr ession2 說(shuō)明
運(yùn)算符(算術(shù)復(fù)合賦值);將 expr
ession1% expr ession2 的值賦予 expr ession1。例如,下面兩個(gè)表達(dá)式是相同的: x %= y
x = x % y
示例
x = 14;
y = 5;
trace(x %= y);//4
二 影片剪輯的屬性
每個(gè)影片剪輯在建立時(shí)都繼承影片剪輯類的所有屬性,我們可以在程序中調(diào)用和設(shè)置這些屬性,如果不設(shè)置這些屬性系統(tǒng)會(huì)默認(rèn)設(shè)置這些屬性.研究mc的屬性應(yīng)該首先熟悉設(shè)置屬性和調(diào)用屬性的兩個(gè)命令
1 setProperty(位于;動(dòng)作--影片剪輯控制)
setProperty("target",property,value/expr
ession)
參數(shù)
target 到要設(shè)置其屬性的影片剪輯實(shí)例名稱的路徑。
property 要設(shè)置的屬性。
value 屬性的新文本值。
expr
ession 計(jì)算結(jié)果為屬性新值的公式。 說(shuō)明
動(dòng)作;當(dāng)影片播放時(shí),更改影片剪輯的屬性值。
示例
當(dāng)單擊按鈕時(shí),此語(yǔ)句將名為 star 的影片剪輯的 _alpha 屬性設(shè)置為 30%:
on(release) {
setProperty("star", _alpha, "30");
}
2 getProperty(位于;函數(shù))
getProperty(instancename , property)
參數(shù)
instancename 要獲取其屬性的影片剪輯的實(shí)例名稱。
property 影片剪輯的屬性。
說(shuō)明
函數(shù);返回影片剪輯 instancename 的指定 property 的值。
示例
下面的示例獲取影片剪輯 mc1 的水平軸坐標(biāo) (_x),并將其分配給變量mymc1x:
mymc1x = getProperty(_root.myMovie, _x);
本講重點(diǎn)掌握
(1)賦值運(yùn)算符" += "
(2)賦值運(yùn)算符" -= "
(3)mc屬性設(shè)置命令setProperty
(4)mc屬性調(diào)用命令getProperty
第六講按鈕控制復(fù)習(xí)
第七講比較運(yùn)算符與mc屬性
一 比較運(yùn)算符
1 "<"小于比較(lt)
格式;expr
ession1 < expr ession2 參數(shù);expr
ession1、expr ession2 數(shù)字或字符串。 說(shuō)明
運(yùn)算符(比較);比較兩個(gè)表達(dá)式以確定 expr
ession1 是否小于 expr ession2;如果是,則該運(yùn)算符返回 true。如果 expr ession1 大于或等于 expr ession2,則該運(yùn)算符返回 false。使用字母順序計(jì)算字符串表達(dá)式;所有的大寫字母排在小寫字母的前面。 示例
下面的示例舉例說(shuō)明數(shù)數(shù)值比較和字符串比較所返回的 true 和 false。
3 < 10;// true
10 < 3;// false
"Allen" < "Jack";// true
"Jack" < "Allen";// false
"11" < "3";//true
"11" < 3;// false
"C" < "abc";// false
cc="A" < "a";
trace(cc);//true
1 "<"小于比較(lt) 2 "<="小于等于(le) 3 ">"大于比較(gt) 4 ">="大于等于(ge)
5 "=="相等(eg) 6 "!="不相等(<>) 7 "==="嚴(yán)格相等 8 "!==="不嚴(yán)格相等
二 影片剪輯屬性2
1 透明度 _alpha
格式
myMovieClip._alpha
說(shuō)明
屬性;設(shè)置或獲取由 MovieClip 指定的影片剪輯的 Alpha 透明度 (value)。有效值為 0(完全透明)到 100(完全不透明)。如果影片剪輯的 _alpha 設(shè)置為 0,雖然其中的對(duì)象不可見,但也是活動(dòng)的。例如,依然可以點(diǎn)擊一個(gè) _alpha 屬性設(shè)置為 0 的影片剪輯中的按鈕。
示例
下面的語(yǔ)句在點(diǎn)擊按鈕時(shí),將名為 star 的影片剪輯的 _alpha 屬性設(shè)置為 30%:
on(release) {
star._alpha = 30;
}
2 旋轉(zhuǎn)_rotation
格式
myMovieClip._rotation
說(shuō)明
屬性;以度為單位指定影片剪輯的旋轉(zhuǎn)。
3 可見性_visible
格式
myMovieClip._visible
說(shuō)明
屬性;一個(gè)布爾值,指示由 MovieClip 參數(shù)指定的影片是否可見。不可見的影片剪輯(_visible 屬性設(shè)置為 false)處于禁用狀態(tài)。例如,不能點(diǎn)擊 _visible 屬性設(shè)置為 false 的影片剪輯中的按鈕。
第8講 邏輯運(yùn)算與mc屬性
一 邏輯運(yùn)算
1 邏輯非"!"(not)
格式
!expr
ession 說(shuō)明
運(yùn)算符(邏輯);對(duì)變量或表達(dá)式的布爾值取反。如果 expr
ession 是絕對(duì)值或轉(zhuǎn)換值為 true 的變量,則 !expr
ession 的值為 false。如果表達(dá)式 x && y 的計(jì)算結(jié)果為 false,則表達(dá)式 !(x && y) 的計(jì)算結(jié)果為 true。
下面的表達(dá)式說(shuō)明使用 ! 運(yùn)算符的結(jié)果:
!true 返回 false
!false 返回 true
2 邏輯與"&&"(snd)
格式
expr
ession1 && expr ession2 說(shuō)明
對(duì)一個(gè)或兩個(gè)表達(dá)式的值執(zhí)行布爾運(yùn)算。計(jì)算 expr
ession1(該運(yùn)算符左側(cè)的表達(dá)式),當(dāng) 此表達(dá)式的計(jì)算結(jié)果為 false 時(shí)返回 false。如果 expr
ession1 的計(jì)算結(jié)果為 true,則計(jì)算 expr
ession2(該運(yùn)算符右側(cè)的表達(dá)式)。如果 expr ession2 的計(jì)算結(jié)果為 true,則最終結(jié)果 為 true;否則,為 false。
3 邏輯或"||"(or)
格式
expr
ession1 || expr ession2 參數(shù)
expr
ession1、expr ession2 布爾值或轉(zhuǎn)換為布爾值的表達(dá)式。 說(shuō)明
運(yùn)算符(邏輯);計(jì)算 expr
ession1 和 expr ession2。如果其中任何一個(gè)或者兩個(gè)表達(dá)式的計(jì)
算結(jié)果為 true,則結(jié)果為 true;只有當(dāng)兩個(gè)表達(dá)式的計(jì)算結(jié)果都為 false 時(shí),結(jié)果才為
false。邏輯 OR 運(yùn)算符可用于任意多個(gè)操作數(shù);只要任意一個(gè)操作數(shù)的計(jì)算結(jié)果為 true,則
結(jié)果為 true。
對(duì)于非布爾表達(dá)式,邏輯 OR 運(yùn)算符使得 Flash 對(duì)左側(cè)的表達(dá)式進(jìn)行計(jì)算;如果左側(cè)的表達(dá)式
可以轉(zhuǎn)換為 true,則結(jié)果為 true。否則,計(jì)算右側(cè)的表達(dá)式,而且結(jié)果就是該表達(dá)式的值。
二 影片剪輯屬性3
1 影片剪輯寬度 _width
格式
myMovieClip._width
說(shuō)明
以像素為單位設(shè)置和獲取影片剪輯的寬度。
2 影片剪輯高度 _height
格式
myMovieClip._height
說(shuō)明
以像素為單位設(shè)置和獲取影片剪輯的高度。
3 _x縮放系數(shù) _xscale
格式
myMovieClip._xscale
4 _y縮放系數(shù)
格式
myMovieClip._yscale
說(shuō)明
xscale和_yscale的值代表了相對(duì)于庫(kù)中原影片剪輯的橫向尺寸width和縱向尺寸height的百分
比,100為影片剪輯在編輯時(shí)的大小,大于100時(shí)起放大作用,在0-100之間時(shí)起縮小作用,小于0時(shí)發(fā)生翻轉(zhuǎn).
第9講 影片剪輯事件與拖動(dòng)
一 On
clipEvet 前面我們主要練習(xí)了把命令寫在時(shí)間軸的關(guān)鍵幀上和按鈕上,其實(shí)我們還可以把命令寫在影片剪輯上,我們知道命令寫在按鈕上的時(shí)候,必需首先寫on事件例如;on(press){...}或者on(release){...}等等,用來(lái)表示鼠標(biāo)在按鈕上發(fā)生的動(dòng)作,同樣的道理當(dāng)我們把命令寫在影片剪輯上的時(shí)候必需首先寫On
clipEvet. 事件處理函數(shù)On
clipEvet與on命令十分類似,不同的是on事件設(shè)置的是鼠標(biāo)或鍵盤事件,而On clipEvet命令設(shè)置的是影片剪輯事件,它只能附加在影片剪輯上面,不能寫在幀或按鈕元件上.On clipEvet的事件有九重,他們是 (1) load 當(dāng)movieclip被下載到當(dāng)前場(chǎng)景的時(shí)間軸上時(shí)觸發(fā)load事件.
(2) unload 事件在當(dāng)前場(chǎng)景的時(shí)間軸上,當(dāng)movieclip被卸載時(shí)觸發(fā)unload事件,在卸載后第一幀執(zhí)行On
clipEvet命令設(shè)定的操作 (3) enterFrame 以影片幀頻不斷地觸發(fā)此動(dòng)作。
(4) mouseMove 每次移動(dòng)鼠標(biāo)時(shí)啟動(dòng)此動(dòng)作。_xmouse 和 _ymouse 屬性用于確定當(dāng)前鼠標(biāo)位置。
(5) mouseDown 當(dāng)按下鼠標(biāo)左鍵時(shí)啟動(dòng)此動(dòng)作。
(6) mouseUp 當(dāng)釋放鼠標(biāo)左鍵時(shí)啟動(dòng)此動(dòng)作。
(7) keyDown 當(dāng)按下某個(gè)鍵時(shí)啟動(dòng)此動(dòng)作。使用 Key.getCode(); 方法獲取最近按下的鍵的有關(guān)信息。
(8) keyUp 當(dāng)釋放某個(gè)鍵時(shí)啟動(dòng)此動(dòng)作。使用 Key.getCode() 方法獲取最近按下的鍵的有關(guān)信息。
(9) da
ta 當(dāng)在 loadVariables 或 loadMovie 動(dòng)作中接收數(shù)據(jù)時(shí)啟動(dòng)此動(dòng)作。當(dāng)與 loadVariables 動(dòng)作一起指定時(shí),da ta 事件只發(fā)生一次,即加載最后一個(gè)變量時(shí)。當(dāng)與 loadMovie 動(dòng)作一起指定時(shí),獲取數(shù)據(jù)的每一部分時(shí),da ta 事件都重復(fù)發(fā)生。 二拖動(dòng)命令
1 startDrag
格式
startDrag(target,[lock ,left ,top ,right,bottom])
參數(shù)
target 要拖動(dòng)的影片剪輯的目標(biāo)路徑。
lock 一個(gè)布爾值,指定可拖動(dòng)影片剪輯是鎖定到鼠標(biāo)位置中央 (true),還是鎖定到用戶首次點(diǎn)擊該影片剪輯的位置上 (false)。此參數(shù)是可選的。
left、top、right、bottom 相對(duì)于影片剪輯父級(jí)坐標(biāo)的值,這些坐標(biāo)指定該影片剪輯的約束矩形。這些參數(shù)是可選的。返回?zé)o。
說(shuō)明動(dòng)作;使 target 影片剪輯在影片播放過(guò)程中可拖動(dòng)。一次只能拖動(dòng)一個(gè)影片剪輯。執(zhí)行 startDrag 動(dòng)作后,影片剪輯將保持可拖動(dòng)狀態(tài),直到被 stopDrag 動(dòng)作明確停止為止,或者直到為其他影片剪輯調(diào)用了 startDrag 動(dòng)作為止。
示例1
若要拖動(dòng)放在任何位置的影片剪輯,可將 startDrag 和 stopDrag 動(dòng)作附加到該影片剪輯內(nèi)的某個(gè)按鈕上。
on(press) {
startDrag(this,true);
}
on(release) {
stopDrag();
}
第10講 鼠標(biāo)
一 捕獲鼠標(biāo)的坐標(biāo)
我們可以用兩種方法捕獲鼠標(biāo)的坐標(biāo),其一是用影片剪輯的_xmouse和_ymouse屬性,是最常用的方法,其二是對(duì)影片剪輯設(shè)置跟隨,獲取該影片剪輯的坐標(biāo)用來(lái)替代鼠標(biāo)的坐標(biāo).獲取鼠標(biāo)坐標(biāo)的腳本可以寫在時(shí)間軸上也可以寫在影片剪輯上,下面我們使用影片剪輯的enterFrame()和mouseMove事件來(lái)做實(shí)驗(yàn)
1 影片剪輯的mouseMove事件
on
ClipEvent (mouseMove) { _root.my_xmouse = _xmouse;
_root.my_ymouse = _ymouse;
}
2 影片剪輯的enterFrame事件
on
ClipEvent (enterFrame) { _root.a=_root._xmouse;
_root.b=_root._ymouse;
}
3 設(shè)置跟隨測(cè)試mc坐標(biāo)替代鼠標(biāo)坐標(biāo)
on
ClipEvent (enterFrame) { startDrag(_root.mc, true);
_root.a=getProperty(_root.mc,_x);
_root.b=getProperty(_root.mc,_y);
}
二 鼠標(biāo)隱藏與替換
1 隱藏命令hide與顯示命令 show
格式
Mouse.hide()
說(shuō)明
方法;隱藏影片中的光標(biāo)。默認(rèn)情況下,光標(biāo)可見。使用Mouse.show()可以把隱藏的鼠標(biāo)顯示出來(lái).
示例
下列附加到主時(shí)間軸上的影片剪輯上的代碼會(huì)隱藏標(biāo)準(zhǔn)光標(biāo),并將 mc 影片剪輯實(shí)例的 x 和 y 位置設(shè)置為主時(shí)間軸中的 x 和 y 鼠標(biāo)位置。這種方法可以省去設(shè)置鼠標(biāo)拖動(dòng)命令的替換
on
ClipEvent(enterFrame){ Mouse.hide();
_root.mc._x = _root._xmouse;
_root.mc._y = _root._ymouse;
}
第十一講復(fù)制與mc的顏色設(shè)置
一 復(fù)制duplicateMovieClip
1 duplicateMovieClip
格式
duplicateMovieClip(target, newname,depth)
參數(shù) target 要復(fù)制的影片剪輯的目標(biāo)路徑。
newname 復(fù)制的影片剪輯的唯一標(biāo)識(shí)符。
depth 復(fù)制的影片剪輯的唯一深度級(jí)別。深度級(jí)別是復(fù)制的影片剪輯的堆疊順序。這種堆疊順序很像時(shí)間軸中圖層的堆疊順序;較低深度級(jí)別的影片剪輯隱藏在較高堆疊順序的剪輯之下。必須為每個(gè)復(fù)制的影片剪輯分配一個(gè)唯一的深度級(jí)別,以防止它替換現(xiàn)有深度上的影片。
說(shuō)明
動(dòng)作;當(dāng)影片正在播放時(shí),創(chuàng)建一個(gè)影片剪輯的實(shí)例。無(wú)論播放頭在原始影片剪輯(或“父級(jí)”)中處于什么位置,復(fù)制的影片剪輯的播放頭始終從第一幀開始。父影片剪輯中的變量不拷貝到復(fù)制的影片剪輯中。如果刪除父影片剪輯,則復(fù)制的影片剪輯也被刪除。使用 removeMovieClip 動(dòng)作或方法可以刪除由 duplicateMovieClip 創(chuàng)建的影片剪輯實(shí)例。
示例1;當(dāng)用按鈕設(shè)置變量kk為1時(shí),復(fù)制15次mc, 源文件見"命令寫在幀上復(fù)制"
i++;
if(_root.kk==1){
duplicateMovieClip(_root.mc,"mc"+i,i);
mx=getProperty("mc"+i,_x);
my=getProperty("mc"+i,_y);
setProperty("mc"+i,_x,mx+i*35);
setProperty("mc"+i,_y,my);
set("mc"+i+".a",i);
}
if(i>=15){
i=0;
}
示例2 源文件見"命令寫在按鈕上復(fù)制"
按鈕1
on (release) {
i++;
if(i>10){
i=0;
}
k = 0;
duplicateMovieClip(mc, "mc"+i, i);
mx = getProperty("mc"+i, _x);
my = getProperty("mc"+i, _y);
setProperty("mc"+i, _x, mx+i*50);
setProperty("mc"+i, _y, my);
set("mc"+i+".a", i);
}
按鈕2
on (release) {
k++;
if(k>10){
k=0;
}
i = 0;
duplicateMovieClip(mc, "mc"+k, k);
mx = getProperty("mc"+k, _x);
my = getProperty("mc"+k, _y);
setProperty("mc"+k, _x, mx+k*50);
setProperty("mc"+k, _y, my+k*50);
set("mc"+k+".a", k);
}
按鈕3
on (release) {
j++;
removeMovieClip("mc"+j);
if(j>10){
j=0;
}
}
二 color對(duì)象
使用color(顏色)對(duì)象可以自由設(shè)置影片剪輯的顏色屬性,在flash中顏色的值使用紅綠蘭三原色的值組合起來(lái)表示,格式為0xrrggbb其中rrggbb表示紅綠蘭,分別用十六進(jìn)制數(shù)表示,取值范圍為0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f.
例如
黑色0x000000
白色0xffffff
紅色0xff0000
綠色0x00ff00
藍(lán)色0x0000ff
黃色0xffff00
1 構(gòu)造color對(duì)象
格式
new Color(target)
參數(shù) target 影片剪輯的實(shí)例名稱。
說(shuō)明
構(gòu)造函數(shù);為由 target 參數(shù)指定的影片剪輯創(chuàng)建 Color 對(duì)象的實(shí)例。然后可使用該 Color 對(duì)象的方法來(lái)更改整個(gè)目標(biāo)影片剪輯的顏色。
2用setRGB設(shè)置顏色對(duì)象
myColor.setRGB(0xRRGGBB)
參數(shù) 0xRRGGBB 要設(shè)置的十六進(jìn)制或 RGB 顏色。對(duì)于 RR、GG 和 BB,每種代碼由兩個(gè)十六進(jìn)制數(shù)字組成,這些數(shù)字指定每種顏色成分的偏移量。0x 告知?jiǎng)幼髂_本編譯器該數(shù)字是十六進(jìn)制數(shù)值。
說(shuō)明
方法;指定 Color 對(duì)象實(shí)例的 RGB 顏色。
示例1
下面的示例為影片剪輯 mc 創(chuàng)建一個(gè)名為 myColor 的 Color 對(duì)象實(shí)例,并設(shè)置其 RGB 值:
myColor = new Color(mc);
myColor.setRGB(0xff9933);
示例2 源文件見"2顏色設(shè)置"
幀1
foo = 0;
幀2
foo++;
_root.mc.play();
duplicateMovieClip("_root.flower", "mc" + foo, foo);
setProperty("mc" + foo, _x, random(350));
setProperty("mc" + foo, _y, random(300));
setProperty("mc" + foo, _alpha, random(275));
setProperty("mc" + foo, _xscale, random(200));
setProperty("mc" + foo, _yscale, random(200));
col = random(0xafafaf+0x999999);
mycolor = new Color("mc"+foo);
mycolor.setRGB(col);
幀3
if(foo<100){
gotoAndPlay(2);
} else {
gotoAndPlay(1);
}
3 用setTransform進(jìn)行顏色設(shè)置
格式
myColor.setTransform(colorTransformObject);
參數(shù)
colorTransformObject 使用 new Object 構(gòu)造函數(shù)創(chuàng)建的對(duì)象。此 Object 對(duì)象實(shí)例必須具有下列指定顏色轉(zhuǎn)換值的屬性:ra、rb、ga、gb、ba、bb、aa、ab。這些屬性在下面進(jìn)行了解釋。
說(shuō)明
方法;設(shè)置 Color 對(duì)象實(shí)例的顏色轉(zhuǎn)換信息。colorTransformObject 參數(shù)是通過(guò) new Object 構(gòu)造函數(shù)創(chuàng)建的通用對(duì)象。它具有指定顏色的紅、綠、藍(lán)和 alpha(透明度)成分百分比和偏移量數(shù)值的參數(shù),下面是設(shè)置舉例
顏色轉(zhuǎn)換對(duì)象的參數(shù)與“高級(jí)效果”對(duì)話框中的設(shè)置相對(duì)應(yīng),定義如下:
- ra 是紅色成分的百分比(-100 到 100)。
- rb 是紅色成分的偏移量(-255 到 255)。
- ga 是綠色成分的百分比(-100 到 100)。
- gb 是綠色成分的偏移量(-255 到 255)。
- ba 是藍(lán)色成分的百分比(-100 到 100)。
- bb 是藍(lán)色成分的偏移量(-255 到 255)。
- aa 是 alpha 的百分比(-100 到 100)。
- ab 是 alpha 的偏移量(-255 到 255)。
可以按如下形式創(chuàng)建 colorTransformObject 參數(shù):
myColorTransform = new Object();
myColorTransform.ra = 50;
myColorTransform.rb = 244;
myColorTransform.ga = 40;
myColorTransform.gb = 112;
myColorTransform.ba = 12;
myColorTransform.bb = 90;
myColorTransform.aa = 40;
myColorTransform.ab = 70;
也可使用以下語(yǔ)法來(lái)創(chuàng)建 colorTransformObject 參數(shù):
myColorTransform = { ra: ‘50’, rb: ‘244’, ga: ‘40’, gb: ‘112’, ba: ‘12’, bb: ‘90’, aa: ‘40’, ab: ‘70’}
示例 源文件見"3顏色設(shè)置"
i=i+5;
duplicateMovieClip(mc,"mc"+i,i);
fmc=getProperty("mc"+i,_rotation)
setProperty("mc"+i,_rotation,fmc+i);
mycolor=new Color(mc);
myobj=new Object();
myobj.ra=random(100);
myobj.rb=random(255);
myobj.ga=random(100);
myobj.gb=random(255);
myobj.ba=random(100);
myobj.bb=random(255);
myobj.aa=random(100)-random(50);
myobj.ab=random(255)-random(80);
mycolor.setTransform(myobj);
第12講 影片剪輯深度
一 影片剪輯深度
每個(gè)影片剪輯都具有自身的 z 順序空間,z 順序空間確定各對(duì)象在其父級(jí) SWF 文件或影片剪輯中的重疊方式。每個(gè)影片剪輯都有一個(gè)關(guān)聯(lián)的深度值,該值用來(lái)確定它是顯示在同一個(gè)影片剪輯時(shí)間軸中其它影片剪輯的前面還是后面。當(dāng)使用 MovieClip.attachMovie()、
MovieClip.duplicateMovieClip() 或 MovieClip.createEmptyMovieClip() 創(chuàng)建影片剪輯時(shí),總是要以方法參數(shù)的形式為新剪輯指定一個(gè)深度。影片剪輯的深度值的范圍是從 -16384 到 1048575。
格式
MovieClip.swapDepths()
用法
my_mc.swapDepths(depth)
my_mc.swapDepths(target)
參數(shù)
depth 一個(gè)數(shù)字,指定 my_mc 將被放置的深度級(jí)別。
target 一個(gè)字符串,指定其深度將被 my_mc 指定的實(shí)例交換的影片剪輯實(shí)例。兩個(gè)實(shí)例必須具有相同的父級(jí)影片剪輯。
說(shuō)明
方法;用由 target 參數(shù)指定的影片剪輯或者當(dāng)前占據(jù)著 depth 參數(shù)中指定的深度級(jí)別的影片剪輯交換指定實(shí)例 (my_mc) 的堆疊,即 z 順序(深度級(jí)別)。兩個(gè)影片剪輯必須具有相同的父級(jí)影片剪輯。交換影片剪輯的深度級(jí)別的作用是將一個(gè)影片剪輯移到另一個(gè)影片剪輯的前面或后面。如果調(diào)用該方法時(shí)影片剪輯正在補(bǔ)間,則補(bǔ)間會(huì)停止。
示例1,以下代碼將復(fù)制出一系列新影片剪輯,每個(gè)影片剪輯的深度都不相同
duplicateMovieClip(mc, "mc"+i, i);
示例2 以下代碼將兩個(gè)新影片剪輯附加到 my_mc。第一個(gè)剪輯(名為 mc_1)將顯示在 mc_2 的后面,這是因?yàn)橄虻谝粋€(gè)剪輯分配了一個(gè)較小的深度值。
container_mc.attachMovie("symbolID", "clip_1", 10);
container_mc.attachMovie("symbolID", "clip_2", 15);
示例3 當(dāng)按鈕點(diǎn)擊后mc的深度將會(huì)被從新設(shè)置
on (release) {
_root.mc1.swapDepths(30);
_root.mc2.swapDepths(20);
_root.mc3.swapDepths(10);
}
第13講 循環(huán)結(jié)構(gòu)控制
一 while與do_while循環(huán)
while與do_while結(jié)構(gòu)都可以按照一定的條件循環(huán)執(zhí)行循環(huán)體,wihle結(jié)構(gòu)先判定循環(huán)條件,當(dāng)條件符合時(shí)就執(zhí)行循環(huán)體,按順序執(zhí)行完循環(huán)體中的語(yǔ)句后,在返回wihle語(yǔ)句開始處,重新判定條件,并以此規(guī)則進(jìn)行循環(huán)操作,直到循環(huán)條件為false時(shí)終止循環(huán),轉(zhuǎn)而執(zhí)行wihle結(jié)構(gòu)下面的命令,與wihle結(jié)構(gòu)不同的是do_while循環(huán)結(jié)構(gòu)先執(zhí)行循環(huán)體中的語(yǔ)句,然后判定循環(huán)條件.這就是說(shuō)do_while循環(huán)結(jié)構(gòu)無(wú)論條件是否符合,循環(huán)至少執(zhí)行一次.
1 while
格式
while(condition) {
statement(s);
}
參數(shù)
condition 每次執(zhí)行 while 動(dòng)作時(shí)都要重新計(jì)算的表達(dá)式。如果該語(yǔ)句的計(jì)算結(jié)果為 true,則運(yùn)行 statement(s)。
statement(s) 條件的計(jì)算結(jié)果為 true 時(shí)要執(zhí)行的代碼。又叫循環(huán)體
說(shuō)明
動(dòng)作;測(cè)試表達(dá)式,只要該表達(dá)式為 true,就重復(fù)運(yùn)行循環(huán)中的語(yǔ)句或語(yǔ)句序列。
在運(yùn)行語(yǔ)句塊之前,首先測(cè)試 condition;如果該測(cè)試返回 true,則運(yùn)行該語(yǔ)句塊。如果該條件為 false,則跳過(guò)該語(yǔ)句塊,并執(zhí)行 while 動(dòng)作語(yǔ)句塊之后的第一條語(yǔ)句。
通常當(dāng)計(jì)數(shù)器變量小于某指定值時(shí),使用循環(huán)執(zhí)行動(dòng)作。在每個(gè)循環(huán)的結(jié)尾遞增計(jì)數(shù)器的值,直到達(dá)到指定值為止。此時(shí),condition 不再為 true,且循環(huán)結(jié)束。
while 語(yǔ)句執(zhí)行的步驟。
1 計(jì)算表達(dá)式 condition。2 如果 condition 的計(jì)算結(jié)果為 true,或者一個(gè)可轉(zhuǎn)換為布爾值 true 的值(比如一個(gè)非零數(shù)字),則轉(zhuǎn)到步驟 3。否則,while 語(yǔ)句結(jié)束,并從 while 循環(huán)之后的下一語(yǔ)句恢復(fù)執(zhí)行過(guò)程。3 運(yùn)行語(yǔ)句塊 statement(s)。4 轉(zhuǎn)到步驟 1。
步驟 1 至 4 的每次重復(fù)叫做循環(huán)的“迭代”。在每次迭代的開始重新測(cè)試 condition.
示例1
此示例在舞臺(tái)上復(fù)制五個(gè)影片剪輯,每個(gè)影片剪輯具有隨機(jī)生成的 、 位置;xscale、yscale 以及 _alpha 屬性以達(dá)到分散的效果。.變量 foo 初始化為值 0。設(shè)置 condition 參數(shù)使 while 循環(huán)運(yùn)行五次,即只要變量 foo 的值小于 5 就運(yùn)行。在 while 循環(huán)中,復(fù)制影片剪輯,并使用 setProperty 調(diào)整所復(fù)制影片剪輯的各種屬性。循環(huán)的最后一條語(yǔ)句遞增 foo,以便當(dāng)該值達(dá)到 5 時(shí),condition 參數(shù)計(jì)算結(jié)果為 false,從而不再執(zhí)行該循環(huán)。
on(release) {
foo = 0;
while(foo < 5) {
duplicateMovieClip("_root.flower", "mc" + foo, foo);
setProperty("mc" + foo, _x, random(275));
setProperty("mc" + foo, _y, random(275));
setProperty("mc" + foo, _alpha, random(275));
setProperty("mc" + foo, _xscale, random(200));
setProperty("mc" + foo, _yscale, random(200));
foo++;
}}
2 do_while
do {statement(s)
} while (condition)
參數(shù)
condition 要計(jì)算的條件。
statement(s) 只要 condition 參數(shù)計(jì)算結(jié)果為 true 就會(huì)執(zhí)行的語(yǔ)句。
動(dòng)作;執(zhí)行語(yǔ)句,然后只要條件為 true,就計(jì)算循環(huán)中的條件。
二 for
格式
for(init; condition; next) {
statement(s);
}
參數(shù)
init 一個(gè)在開始循環(huán)序列前要計(jì)算的表達(dá)式,通常為賦值表達(dá)式。此參數(shù)還允許使用 var 語(yǔ)句。
condition 計(jì)算結(jié)果為 true 或 false 的表達(dá)式。在每次循環(huán)迭代前計(jì)算該條件;當(dāng)條件的計(jì)算結(jié)果為 false 時(shí)退出循環(huán)。
next 一個(gè)在每次循環(huán)迭代后要計(jì)算的表達(dá)式;通常為使用 ++(遞增)或 --(遞減)運(yùn)算符的賦值表達(dá)式。
statement(s) 在循環(huán)體內(nèi)要執(zhí)行的指令。
說(shuō)明
動(dòng)作;一種循環(huán)結(jié)構(gòu),首先計(jì)算 init(初始化)表達(dá)式一次,只要 condition 的計(jì)算結(jié)果為 true,則按照以下順序開始循環(huán)序列,執(zhí)行 statement,然后計(jì)算 next 表達(dá)式。
示例1
下面是使用 for 重復(fù)執(zhí)行同一動(dòng)作的示例。下面的代碼中,for 循環(huán)將從 1 到 100 的數(shù)字相加:
var sum = 0;
for (var i=1; i<=100; i++) {
sum = sum + i;
trace(sum);//
}
結(jié)果
聯(lián)系客服