版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十章 交互動(dòng)畫基礎(chǔ)1目錄10.1ActionScript語(yǔ)言簡(jiǎn)介10.2添加動(dòng)作的基本方法10.3基本命令和程序控制結(jié)構(gòu)10.4Flash實(shí)例屬性及剪輯的控制2教學(xué)目的和要求了解ActionScript語(yǔ)言的來(lái)源以及概念,理解面向?qū)ο蟮木幊?。理解ActionScript的常用術(shù)語(yǔ):事件、函數(shù)、方法、屬性、變量、關(guān)鍵字、運(yùn)算符等;理解函數(shù)和方法的區(qū)別。掌握編程中常用的事件處理程序。掌握為Flash動(dòng)畫添加動(dòng)作的基本方法,掌握“行為”面板的使用。掌握“動(dòng)作”面板的使用及相關(guān)選項(xiàng),了解ActionScript編程環(huán)境(使用提示和語(yǔ)法檢查等)。3
在欣賞Flash動(dòng)畫時(shí),常??吹斤h落的雪花、淅瀝的小雨等場(chǎng)景,還有一些Flash小游戲讓人們玩得不亦樂(lè)乎,其實(shí)這些動(dòng)畫很大程度上是依賴Actions語(yǔ)句對(duì)動(dòng)畫進(jìn)行編程而實(shí)現(xiàn)的。有些動(dòng)畫甚至根本不需要制作任何動(dòng)畫就可以直接應(yīng)用Actions語(yǔ)句來(lái)實(shí)現(xiàn)。
ActionsScript實(shí)際是一種腳本語(yǔ)言,主要用來(lái)對(duì)動(dòng)畫進(jìn)行編程,使用它可以使動(dòng)畫具有交互性,在一些動(dòng)畫中起到畫龍點(diǎn)睛的效果。
Flash初學(xué)者可能會(huì)問(wèn)“ActionScript在哪里呢?”在Flash中有一個(gè)“動(dòng)作”面板,F(xiàn)lash中的所有腳本語(yǔ)言都可以在這里找到,展開(kāi)的“動(dòng)作”面板如圖所示??梢赃x擇[窗口][開(kāi)發(fā)面板][動(dòng)作]菜單命令打開(kāi)“動(dòng)作”面板。4AS動(dòng)畫欣賞2Flash\教本講解\北京焰火.swfFlash\教本講解\北京焰火.swf5AS動(dòng)畫欣賞1-數(shù)字世界flash/腳本動(dòng)畫--數(shù)字天地.swf610.1ActionScript語(yǔ)言簡(jiǎn)介基本內(nèi)容:語(yǔ)言簡(jiǎn)介:ActionScript語(yǔ)言的來(lái)源以及概念,面向?qū)ο蟮木幊??;菊Z(yǔ)法:ActionScript的基本語(yǔ)法介紹:事件、函數(shù)、方法、屬性、變量、關(guān)鍵字、目標(biāo)路徑等;變量與函數(shù)。7ActionScript語(yǔ)言ActionScript是用來(lái)控制Flash影片的編程語(yǔ)言。同時(shí)它是一種非常簡(jiǎn)單的語(yǔ)言,簡(jiǎn)單的語(yǔ)言能實(shí)現(xiàn)一些非常高級(jí)的操作。AS語(yǔ)言的編寫很大程度上是從列表中選擇語(yǔ)句和參數(shù)。AS是一種腳本語(yǔ)言,非常易于理解,即使有很少或沒(méi)有編程經(jīng)驗(yàn),也會(huì)很容易掌握,因?yàn)锳S語(yǔ)言看起來(lái)像是普通的英語(yǔ)。ActionScript起源ActionScript是基于JavaScript的國(guó)際規(guī)范ECMA-262創(chuàng)建的。因此它起源于JavaScript,但是和JavaScript又不完全相同。8ActionScript1.0(Flash1.0-6.0)對(duì)應(yīng)的虛擬機(jī)為AVM1,基于ECMA-262V2(相當(dāng)于JavaScript1.3)ActionScript2.0(Flash7.0-8.0)對(duì)應(yīng)的虛擬機(jī)為AVM1,基于ECMA-262V3(相當(dāng)于JavaScript1.5)ActionScript3.0(Flash9.0-?)對(duì)應(yīng)的虛擬機(jī)為AVM2,基于ECMA-262V4(相當(dāng)于JavaScript2.0)9ActionScript3.0的腳本編寫功能超越了
ActionScript
的早期版本。它旨在方便創(chuàng)建擁有大型數(shù)據(jù)集和面向?qū)ο蟮目芍赜么a庫(kù)的高度復(fù)雜應(yīng)用程序。雖然
ActionScript3.0對(duì)于在AdobeFlashPlayer9中運(yùn)行的內(nèi)容并不是必需的,但它使用新型的虛擬機(jī)AVM2實(shí)現(xiàn)了性能的改善。ActionScript3.0代碼的執(zhí)行速度可以比舊式
ActionScript
代碼快10倍。
舊版本的
ActionScript
虛擬機(jī)AVM1執(zhí)行
ActionScript1.0和ActionScript2.0代碼。為了向后兼容現(xiàn)有內(nèi)容和舊內(nèi)容,F(xiàn)lashPlayer9支持AVM1。10面向?qū)ο蟮木幊陶Z(yǔ)言ActionScript是一種面向?qū)ο蟮木幊陶Z(yǔ)言,意味著AS在大多數(shù)時(shí)間是在處理和控制Flash中的各種對(duì)象(例如按鈕、影片剪輯),AS檢查及修改對(duì)象的屬性;并對(duì)這些對(duì)象內(nèi)置的方法事件進(jìn)行處理。例如,可以用AS修改一個(gè)圖形實(shí)例的顏色屬性;在AS中處理某個(gè)按鈕實(shí)例的單擊事件。11動(dòng)作腳本可以添加到時(shí)間軸的任意關(guān)鍵幀上,時(shí)間軸既可以是主時(shí)間軸,也可以是影片剪輯的時(shí)間軸。添加腳本的關(guān)鍵幀會(huì)以一個(gè)小寫的“a”標(biāo)注。添加在時(shí)間軸上的動(dòng)作腳本有時(shí)稱為幀動(dòng)作或幀程序。12動(dòng)作腳本還可以存在于單獨(dú)的外部類文件中(.as)135.2動(dòng)作面板和腳本窗口
在默認(rèn)情況下,[動(dòng)作]面板位于工作區(qū)下部。如果沒(méi)有顯示[動(dòng)作]面板,可以執(zhí)行[窗口]—〉[動(dòng)作]菜單命令。或按F9快捷鍵打開(kāi)。14[動(dòng)作]面板有3部分組成:動(dòng)作工具箱腳本導(dǎo)航器腳本編輯窗為用戶創(chuàng)建和編輯管理腳本提供了強(qiáng)大的支持。通過(guò)動(dòng)作面板,可以創(chuàng)建和編輯對(duì)象或幀上的AS代碼。15動(dòng)作工具箱腳本編輯窗腳本導(dǎo)航16新建Flash文檔,單擊腳本窗口上方的[腳本助手]按鈕,切換到腳本助手模式。此時(shí)腳本工具箱中的顯示發(fā)生變化。17要顯示[腳本]窗口,可以執(zhí)行[文件]—〉[新建]—〉菜單命令,在[新建文檔中]對(duì)話框的類型列表中選擇“ActionScript文件”,單擊[確定]按鈕。(也可以執(zhí)行[文件]—〉[打開(kāi)]菜單命令,選擇已有的AS文件)1819第一個(gè)交互動(dòng)畫:flash/教本講解/電影剪輯控制動(dòng)畫.swf源碼2021使用“動(dòng)作”面板基本步驟:選中預(yù)添加行為的對(duì)象:關(guān)鍵幀從“動(dòng)作”面板左側(cè)的函數(shù)列表中選擇需要的內(nèi)容(函數(shù)或者屬性)。根據(jù)對(duì)代碼進(jìn)行修改。返回22初識(shí)ActionScript
在編寫執(zhí)行事件處理的ActionScript
代碼時(shí),您需要識(shí)別三個(gè)重要元素:■事件源:發(fā)生該事件的是哪個(gè)對(duì)象?例如,哪個(gè)按鈕會(huì)被單擊,事件源也稱為“事件目標(biāo)”,因?yàn)镕lashPlayer將此對(duì)象(實(shí)際在其中發(fā)生事件)作為事件的目標(biāo)?!鍪录簩⒁l(fā)生什么事情,以及您希望響應(yīng)什么事情?識(shí)別事件是非常重要的,因?yàn)樵S多對(duì)象都會(huì)觸發(fā)多個(gè)事件?!鲰憫?yīng)函數(shù):當(dāng)事件發(fā)生時(shí),您希望執(zhí)行哪些步驟?23“事件”就是所發(fā)生的、ActionScript
能夠識(shí)別并可響應(yīng)的事情。許多事件與用戶交互有關(guān)—例如,用戶單擊按鈕,或按鍵盤上的鍵。事件源.addEventListener(事件,事件響應(yīng)函數(shù)名稱)2425事件源:btn_play事件:MouseEvent.CLICK(鼠標(biāo)單擊事件)處理函數(shù):moviePlay本質(zhì)上,當(dāng)包含ActionScript代碼的Flash運(yùn)行時(shí),F(xiàn)lashPlayer只是在等待某些事情的發(fā)生。當(dāng)這些事情發(fā)生時(shí),F(xiàn)lashPlayer將會(huì)運(yùn)行給這些事件指定的函數(shù)代碼。26第二個(gè)交互動(dòng)畫實(shí)例鼠標(biāo)或者鍵盤控制影片剪輯的位置272829ActionScript的術(shù)語(yǔ)簡(jiǎn)介基本語(yǔ)法目標(biāo)路徑:影片中影片剪輯實(shí)例、變量、對(duì)象的層次地址。變量:變量是用來(lái)存儲(chǔ)數(shù)值、字符串、對(duì)象、邏輯值及動(dòng)畫片段等信息的標(biāo)識(shí)符。函數(shù):可以向其傳遞參數(shù)并能夠返回值的可重復(fù)使用的代碼段。事件:當(dāng)影片播放時(shí)發(fā)生的動(dòng)作。屬性:定義對(duì)象的特征。方法:分派給對(duì)象的函數(shù)。3031區(qū)分大小寫點(diǎn)語(yǔ)法動(dòng)作腳本語(yǔ)句以分號(hào)(;)結(jié)束注釋關(guān)鍵字:具有特殊意義的AS保留字。privatefunctiongetCurrentDate(){
//創(chuàng)建新的Date對(duì)象
myDate=newDate();//將月份數(shù)轉(zhuǎn)換為月份名稱currentMonth=myDate.getMonth();monthName=calcMonth(currentMonth);year=myDate.getFullYear();currentDate=myDate.getDate();}
動(dòng)作腳本語(yǔ)句以分號(hào)(;)結(jié)束,如以下示例所示:varcolumn=passedDate.getDay();varrow=0;點(diǎn)(.)用于指示與對(duì)象或影片剪輯相關(guān)的屬性或方法。它還用于標(biāo)識(shí)影片剪輯、變量、函數(shù)或?qū)ο蟮哪繕?biāo)路徑。表達(dá)式ballMC.x
引用影片剪輯實(shí)例ballMC
的x屬性ballMC.play();在剪輯ballMC
的時(shí)間軸中移動(dòng)播放頭root.functions.buildGameBoard();調(diào)用主時(shí)間軸上影片剪輯functions中的函數(shù)buildGameBoard():基本語(yǔ)法//創(chuàng)建三個(gè)不同的變量var
myVar=10;var
myvar=10;var
mYvAr=10;
動(dòng)作腳本保留一些單詞用于該語(yǔ)言中的特定用途,不能將它們用作標(biāo)識(shí)符,例如變量、函數(shù)或標(biāo)簽名稱。break
case
class
continue
default
delete
dynamic
else
extends
for
function
get
if
implements
import
in
instanceof
interface
intrinsic
new
private
public
return
set
static
switch
this
typeof
var
void
while
with
返回3233flash/教本講解/美國(guó)地圖.swf34目標(biāo)路徑SWF文件中影片剪輯實(shí)例名稱、變量和對(duì)象的分層結(jié)構(gòu)地址。
35向Flash影片中加入元件實(shí)例時(shí),它被放入到一定影片層級(jí)中。Flash影片的主時(shí)間軸為最底層,稱為root絕對(duì)路徑以文檔加載到其中的層名開(kāi)始,一直延續(xù)到顯示列表中的目標(biāo)實(shí)例。也可以使用別名root來(lái)指示當(dāng)前層的最頂層時(shí)間軸。root.westCoast.oregon
相對(duì)路徑取決于控制時(shí)間軸和目標(biāo)時(shí)間軸之間的關(guān)系。this.parent.oregon當(dāng)前剪輯目標(biāo)剪輯_parent.oregon.play()返回36常/變量示例代碼段:on(release){
var
myNumber=7;
var
myString:="FlashMX2004ActionScript";for(vari=0;i<myNumber;i++){
trace(i);if(i+3==8){
trace(myString);}}}37常/變量常量是指在程序運(yùn)行中不會(huì)改變的量。變量是程序運(yùn)行中可以改變的量。變量實(shí)際上就是一個(gè)信息容器,用來(lái)存儲(chǔ)Flash播放過(guò)程需要的一些信息。變量可以存放任何數(shù)據(jù)類型,包括數(shù)字值(如:myNumber)、字符串值(如:myString)、邏輯值、對(duì)象或電影剪輯等。在Flash中,需要明確地聲明變量數(shù)字、字符串或其他函數(shù)類型。38變量的作用域變量的作用域,是指能夠識(shí)別和引用該變量的區(qū)域。也就是變量在什么范圍內(nèi)是可以訪問(wèn)的:全局變量:即使沒(méi)有使用目標(biāo)路徑指定,也可以在任何時(shí)間軸內(nèi)有效,可以在當(dāng)前時(shí)間軸內(nèi)有效。變量聲明后,在聲明它的整個(gè)層級(jí)(Level)的時(shí)間線內(nèi)它是可訪問(wèn)的。應(yīng)確保首先初始化變量,然后嘗試在腳本中訪問(wèn)它。例如,如果將代碼var
x
=
10;
放置在第20幀上,則附加到第20幀之前的任何幀上的腳本都無(wú)法訪問(wèn)該變量的數(shù)值。本地(局部)變量:在自身代碼塊中有效的變量(在大括號(hào)內(nèi))。就是在聲明它的語(yǔ)句塊內(nèi)(例如一個(gè)函數(shù)體)是可訪問(wèn)的變量,通常是為避免沖突和節(jié)省內(nèi)存占用而使用。39聲明和使用變量使用變量前,使用var命令先加以聲明。var
myNumber:Number=7;var
myString:String="FlashActionScript";varcounter;簡(jiǎn)單示例全局變量可以在整個(gè)Movie中共享;局部變量只在它所在的代碼塊(大括號(hào)之間)中有效。40varcounter:Number=100;counter++;trace(counter);//顯示101
functioncount(){for(varcounter=0;counter<=10;counter++){
trace(counter);//顯示0到10}}count();counter++;trace(counter);//顯示102
如果使用與全局變量相同的名稱初始化一個(gè)本地變量,則在處于該本地變量的范圍內(nèi)時(shí)對(duì)該全局變量不具有訪問(wèn)權(quán)限返回41常/變量:數(shù)據(jù)類型■String:一個(gè)文本值■Numeric:對(duì)于numeric型數(shù)據(jù),ActionScript3.0包含三種特定的數(shù)據(jù)類型:■Number:任何數(shù)值,包括有小數(shù)部分或沒(méi)有小數(shù)部分的值■int:一個(gè)整數(shù)(不帶小數(shù)部分的整數(shù))■uint:一個(gè)“無(wú)符號(hào)”整數(shù),即不能為負(fù)數(shù)的整數(shù)■Boolean:一個(gè)true或false值,例如開(kāi)關(guān)是否開(kāi)啟或兩個(gè)值是否相等42■MovieClip:影片剪輯元件■TextField:動(dòng)態(tài)文本字段或輸入文本字段■SimpleButton:按鈕元件■Date:有關(guān)時(shí)間中的某個(gè)片刻的信息(日期和時(shí)間)43常/變量:常見(jiàn)的數(shù)據(jù)類型
字符串:字符串是諸如字母、數(shù)字和標(biāo)點(diǎn)符號(hào)的序列。在動(dòng)作腳本語(yǔ)句中輸入字符串的方式是將其放在單引號(hào)和雙引號(hào)之間,字符之間串被當(dāng)作字符而不是變量進(jìn)行處理。例如:在語(yǔ)句中favoriteBand=“L7”。vars1:String=“string”;vars2:String=“zifuchuan”;44布爾值(Boolean):布爾值是true和false中的一個(gè)。動(dòng)作腳本也會(huì)在適當(dāng)時(shí)將值true和false轉(zhuǎn)換為1和0。布爾值經(jīng)常與邏輯運(yùn)算一起使用。var
isTouching:Boolean=false;45Number數(shù)據(jù)類型Number數(shù)據(jù)類型可以表示整數(shù)、無(wú)符號(hào)整數(shù)和浮點(diǎn)數(shù)。但是,為了盡可能提高性能,應(yīng)將Number數(shù)據(jù)類型僅用于浮點(diǎn)數(shù)。int
數(shù)據(jù)類型int
數(shù)據(jù)類型在內(nèi)部存儲(chǔ)為32位整數(shù),它包含一組介于-2,147,483,648(-231)和2,147,483,647(231-1)之間的整數(shù)(包括-2,147,483,648和2,147,483,647)。uint
數(shù)據(jù)類型在內(nèi)部存儲(chǔ)為32位無(wú)符號(hào)整數(shù),它包含一組介于0和4,294,967,295(232-1)之間的整數(shù)(包括0和4,294,967,295)。uint
數(shù)據(jù)類型可用于要求非負(fù)整數(shù)的特殊情形。必須使用uint
數(shù)據(jù)類型來(lái)表示像素顏色值46
空值數(shù)據(jù)類型(Null):空值數(shù)據(jù)類型只有一個(gè)值,即Null。它意味著沒(méi)有值,即缺少數(shù)據(jù)。Null值可以用在各種情況中,如指示變量尚未接受到值;指示變量不再包含值;指示函數(shù)沒(méi)有可以返回的值等。作為函數(shù)的函數(shù),則指示省略了一個(gè)參數(shù)。
void數(shù)據(jù)類型void數(shù)據(jù)類型僅包含一個(gè)值:undefined。47Object數(shù)據(jù)類型
Object數(shù)據(jù)類型是由Object類定義的。Object類用作ActionScript
中的所有類定義的基類。ActionScript3.0中的Object數(shù)據(jù)類型與早期版本中的Object數(shù)據(jù)類型存在以下三方面的區(qū)別:第一,Object數(shù)據(jù)類型不再是指定給沒(méi)有類型注釋的變量的默認(rèn)數(shù)據(jù)類型。第二,Object數(shù)據(jù)類型不再包括undefined這一值,在ActionScript3.0中,Object類實(shí)例的默認(rèn)值是null。48默認(rèn)值“默認(rèn)值”是在設(shè)置變量值之前變量中包含的值。Number類型,默認(rèn)值是NaN,NaN
是一個(gè)由IEEE-754標(biāo)準(zhǔn)定義的特殊值,它表示非數(shù)字的某個(gè)值。49當(dāng)測(cè)試和調(diào)試程序時(shí),可以使用typeof()運(yùn)算符來(lái)確定數(shù)據(jù)類型,如trace(typeof(myVar));語(yǔ)句將在[輸出]面板中顯示myVar的數(shù)據(jù)類型??梢允褂靡韵罗D(zhuǎn)換函數(shù)之一,將一種數(shù)據(jù)類型轉(zhuǎn)換成另一種數(shù)據(jù)類型:Array(),Boolean(),Number(),Object(),String()。如果轉(zhuǎn)換失敗,該函數(shù)調(diào)用將返回Null;如果轉(zhuǎn)換成功,該函數(shù)將返回原對(duì)象。50類型轉(zhuǎn)換var
quantityField:String="3";var
quantity:int=quantityField;//在嚴(yán)格模式下出現(xiàn)編譯時(shí)錯(cuò)誤如果您希望繼續(xù)使用嚴(yán)格模式,但是希望將字符串轉(zhuǎn)換為整數(shù),則可以使用顯式轉(zhuǎn)換,如下所示:var
quantityField:String="3";var
quantity:int=int(quantityField);//顯式轉(zhuǎn)換成功。51轉(zhuǎn)換為int、uint
和Number您可以將任何數(shù)據(jù)類型轉(zhuǎn)換為int、uint
和Number。如果var
myBoolean:Boolean=true;var
myINT:int=int(myBoolean);
var
myNum:Number=Number(myBoolean);trace(uint("5"));//5trace(uint("ten"));//052轉(zhuǎn)換為Boolean
在從任何數(shù)值數(shù)據(jù)類型(uint、int
和Number)轉(zhuǎn)換為Boolean時(shí),如果數(shù)值為0,則結(jié)果為false;否則為true。對(duì)于Number數(shù)據(jù)類型,如果值為NaN,則結(jié)果也為false。下面的示例說(shuō)明在轉(zhuǎn)換-1、0和1等數(shù)字時(shí)的結(jié)果:var
myNum:Number;for(myNum=-1;myNum<2;myNum++){
trace("Boolean("+myNum+")is"+Boolean(myNum));}本示例的輸出結(jié)果說(shuō)明在這三個(gè)數(shù)字中,只有0返回false值:Boolean(-1)istrueBoolean(0)isfalseBoolean(1)istrue53var
myDate:Date=newDate(2005,6,1);trace(String(myDate));//星期五7月1日00:00:00GMT-070020055455打開(kāi)指定目錄下的“變量.fla”源文件。選擇舞臺(tái)上的“panda”影片剪輯,在[動(dòng)作]面板中添加如下代碼:mc.addEventListener(Event.ENTER_FRAME,onMove);functiononMove(e:Event){
var
rot:Number; rot=20*Math.random(); //聲明變量rot變量賦于一個(gè)隨機(jī)值
if(mc.rotation>=-20)
mc.rotation-=rot; elseif(mc.rotation<20)
mc.rotation+=rot;
info.text="改變"+rot+"度"+mc.rotation+"度";}變量作用示例56按Ctrl+Enter進(jìn)行測(cè)試:57ActionScript函數(shù)“函數(shù)”(function)就是在程序中可以重復(fù)使用的代碼,你可以將需要處理的值或?qū)ο笸ㄟ^(guò)參數(shù)的形式傳遞給函數(shù),然后由函數(shù)得到結(jié)果,從另一個(gè)角度說(shuō),函數(shù)存在目的就是為了簡(jiǎn)化編程的負(fù)擔(dān),減小代碼量和提高效率。(1)系統(tǒng)函數(shù)用戶在編寫程序的時(shí)候可以直接拿來(lái)使用。下面是一些常用的系統(tǒng)函數(shù)。(2)自定義函數(shù)除了系統(tǒng)函數(shù),我們?cè)诰帉懗绦驎r(shí)還需要自己定義一些函數(shù),用這些函數(shù)去完成指定的功能。講述重點(diǎn)58系統(tǒng)函數(shù)時(shí)間軸控制函數(shù):包括用來(lái)控制影片播放進(jìn)度的各種命令。瀏覽器/網(wǎng)絡(luò)函數(shù)控制web瀏覽器以及加/卸載額外影片文件的命令。影片剪輯控制函數(shù)用來(lái)設(shè)置及管理Flash中的各種元件的實(shí)例。打印函數(shù)其他函數(shù)數(shù)學(xué)函數(shù)包括對(duì)數(shù)字執(zhí)行各種特定數(shù)學(xué)操作的函數(shù)。轉(zhuǎn)換函數(shù)將數(shù)據(jù)從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。59常用內(nèi)置函數(shù)示例Play/Stop:控制影片開(kāi)始/停止播放。gotoAndPlay:將播放頭轉(zhuǎn)到場(chǎng)景中指定的幀并從該幀開(kāi)始播放。fscommand
:將消息發(fā)送給FlashPlayer或?yàn)g覽器。getURL
:將特定URL的文檔加載到瀏覽器中,實(shí)現(xiàn)超鏈接功能duplicateMovieClip
:復(fù)制一個(gè)影片剪輯的實(shí)例Getproperty:返回指定電影剪輯的屬性。startDrag/stopDrag:開(kāi)始/停止拖動(dòng)一個(gè)影片剪輯。TargetPath:返回指定電影剪輯的目標(biāo)路徑字符串。GetVersion:函數(shù)獲取Flashplay的版本號(hào)。GetTimer:影片開(kāi)始播放以來(lái)經(jīng)過(guò)的毫秒數(shù)。Eval:函數(shù)返回由表達(dá)式指定和變量的值。int:數(shù)學(xué)函數(shù),將字符串分析為整數(shù)。IsNaN:數(shù)學(xué)函數(shù),測(cè)試某數(shù)字是否為NaN(不是一個(gè)數(shù)字)。
Number:轉(zhuǎn)換函數(shù),將參數(shù)轉(zhuǎn)換為數(shù)據(jù)類型。Boolean:轉(zhuǎn)換函數(shù),將參數(shù)轉(zhuǎn)換為布爾類型。String:將數(shù)字轉(zhuǎn)換為字符串類型。內(nèi)置函數(shù)簡(jiǎn)單應(yīng)用示例演示Play/Stop,按鈕gotoAndPlay60自定義函數(shù)在Flash中定義函數(shù)的一般形式為:function函數(shù)名稱(參數(shù)1,參數(shù)2,……,參數(shù)n){
//函數(shù)體。即函數(shù)的程序代碼}假設(shè)要定義一個(gè)計(jì)算矩形面積的函數(shù),可以這樣:functionareaOfBox(a,b){//自定義計(jì)算矩形面積的函數(shù)
returna*b;//在這里返回結(jié)果,也就是得到函數(shù)的返回值
}自定義函數(shù)后,可以隨時(shí)調(diào)用并執(zhí)行它。調(diào)用函數(shù)的一般形式:函數(shù)名稱(參數(shù)1,參數(shù)2,……,參數(shù)n);假設(shè)程序中要調(diào)用上面自定義的areaOfBox()函數(shù),可以這樣:area=areaOfBox(3,6);trace("area="+area);函數(shù)必須使用目標(biāo)路徑才能調(diào)用它們。6110.2添加動(dòng)作的基本方法交互功能使Flash不僅僅局限于演示型的動(dòng)畫設(shè)計(jì),而更使之成為強(qiáng)大的交互程序設(shè)計(jì)平臺(tái)。在“動(dòng)作”面板中進(jìn)行編輯動(dòng)作面板中的代碼要與Flash動(dòng)畫播放過(guò)程中特定的事件對(duì)應(yīng),所謂事件,就是動(dòng)畫播放進(jìn)程中所發(fā)生的可獨(dú)立識(shí)別的事情,例如鼠標(biāo)經(jīng)過(guò)按鈕、單擊按鈕、動(dòng)畫播放到某一個(gè)關(guān)鍵幀等等。在利用Flash設(shè)計(jì)交互程序時(shí),事件是其中最基礎(chǔ)的一個(gè)概念。通過(guò)對(duì)事件編輯代碼,動(dòng)畫可以實(shí)現(xiàn)與用戶交互及響應(yīng)。62事件分類及處理事件的方法Flash中的事件包括用戶事件和系統(tǒng)事件兩類。用戶事件是指用戶直接交互操作而產(chǎn)生的事件。例如:鼠標(biāo)單擊事件按下鍵盤鍵事件系統(tǒng)事件是指Flash動(dòng)畫在播放過(guò)程中自動(dòng)生成的事件。例如:動(dòng)畫播放到某個(gè)關(guān)鍵幀影片剪輯在舞臺(tái)上第一次出現(xiàn)63事件的產(chǎn)生以及處理不同的代碼編寫方式對(duì)不同的事件進(jìn)行響應(yīng)處理:當(dāng)在時(shí)間軸上播放到某一特定關(guān)鍵幀時(shí)。直接在關(guān)鍵幀所對(duì)應(yīng)的腳本輸入?yún)^(qū)編寫行為代碼響應(yīng)其他事件(例如:?jiǎn)螕魟?dòng)畫中的某個(gè)元件、按下鍵盤上的按鍵、某個(gè)影片剪輯載入或卸載)利用事件偵聽(tīng)器方法編寫代碼,代碼編輯區(qū)位:時(shí)間軸的第一幀的腳本編輯區(qū)與動(dòng)畫文件關(guān)聯(lián)的外部類(class)文件64關(guān)鍵幀所屬代碼:直接在腳本輸入?yún)^(qū)編寫直接在腳本輸入?yún)^(qū)編寫行為代碼(動(dòng)畫示例)1、放置元件的三個(gè)實(shí)例在舞臺(tái)上,并分別命名star,star1,star22、新建圖層并選中第一幀3、直接編寫功能代碼65修改元件實(shí)例的顏色var
r:Number=255-Math.random()*500;var
g:Number=255-Math.random()*500;var
b:Number=255-Math.random()*500;this.star.transform.colorTransform=newColorTransform(1,1,1,r,
g,b,0);66按鈕實(shí)例在下面的腳本中,當(dāng)按下鼠標(biāo)按鈕時(shí),將執(zhí)行
startDrag()
動(dòng)作,當(dāng)釋放鼠標(biāo)按鈕時(shí),將執(zhí)行條件腳本,然后放下該對(duì)象。flash/教本講解/電影剪輯控制動(dòng)畫.swf673、編寫moviePlay函數(shù)4、將元件實(shí)例btn_play與函數(shù)moviePlay關(guān)聯(lián)起來(lái)1、用屬性面板將動(dòng)畫中的按鈕實(shí)例命名(btn_play)2、新建圖層并單擊其第一幀(關(guān)鍵幀),F(xiàn)9打開(kāi)動(dòng)作面板68事件偵聽(tīng)器方法添加事件偵聽(tīng)addEventListener
為一個(gè)事件添加一個(gè)監(jiān)聽(tīng),比如鼠標(biāo)單擊,鍵盤某個(gè)鍵被按下等現(xiàn)在的程序都是事件驅(qū)動(dòng)的,也就是你必須要知道用戶有哪些動(dòng)作,才能只當(dāng)要如何去處理,事件偵聽(tīng)就是起到這個(gè)作用的
69事件偵聽(tīng)器方法事件偵聽(tīng)器方法就是讓一個(gè)函數(shù)(稱作偵聽(tīng)器)接收其他對(duì)象(事件源)生成的事件??梢远x多個(gè)函數(shù)(偵聽(tīng)器)并偵聽(tīng)一個(gè)對(duì)象(事件源)的事件,也可以定義函數(shù)并偵聽(tīng)接收多個(gè)對(duì)象的事件。用于偵聽(tīng)的函數(shù)名(偵聽(tīng)器)被偵聽(tīng)的對(duì)象(事件源)偵聽(tīng)的事件名稱(事件)70基本格式:事件源.addEventListener(事件名,偵聽(tīng)函數(shù)名)function偵聽(tīng)函數(shù)名(e:事件類型){……}事件源.removeEventListener(事件名,偵聽(tīng)函數(shù)名)71事件名格式:事件類型:事件名稱常用事件類型:Event、MouseEvent、KeyboardEvent
、TimerEvent
、……事件名稱:必須與事件類型相匹配例如:Event.ENTER_FRAME
MouseEvent.CLICK
MouseEvent.DOUBLE_CLICK
KeyboardEvent.KEY_DOWN
KeyboardEvent.KEY_UP等等72MouseEvent類部分屬性常用事件名:CLICK、DOUBLE_CLICKMOUSE_DOWN、MOUSE_MOVE、MOUSE_OUT、MOUSE_OVER、MOUSE_UPROLL_OUT、ROLL_OVER常用屬性:stageX:鼠標(biāo)在舞臺(tái)中的x坐標(biāo)stageYbuttonDown//是否按下鼠標(biāo)ctrlKey//ctrl鍵是否可用73打開(kāi)指定目錄下“時(shí)間軸控制,fla”源文件。74bt_play.addEventListener(MouseEvent.CLICK,onPlay);bt_stop.addEventListener(MouseEvent.CLICK,onStop);bt_next.addEventListener(MouseEvent.CLICK,onNext);bt_before.addEventListener(MouseEvent.CLICK,onBefore);functiononPlay(e:MouseEvent):void{ play(); }functiononStop(e:MouseEvent):void{ stop(); }functiononNext(e:MouseEvent):void{
for(var
i:int=1;i<5;i++)
nextFrame();}functiononBefore(e:MouseEvent):void{
for(vari:int=1;i<5;i++)
prevFrame();}
75見(jiàn)源文件6-6var
test:Sprite=newSprite()test.graphics.beginFill(0xff9900,1)test.graphics.drawCircle(200,200,100)stage.addChild(test)/繪制一個(gè)圓添加到舞臺(tái)中test.doubleClickEnabled=truetest.addEventListener(MouseEvent.DOUBLE_CLICK,receiver)functionreceiver(e:MouseEvent):void{ trace("坐標(biāo)=("+e.stageX+","+e.stageY+")") trace("鼠標(biāo)是否按下="+e.buttonDown)
trace("ctrl鍵是否可用="+e.ctrlKey)}76KeyboardEvent類部分屬性常用事件名:
keyDown、keyUp常用屬性altKey:Alt是否可用charCode:鍵的ASCII碼ctrlKey:ctrl鍵是否可用keyCode:鍵控代碼值:用于判斷某個(gè)鍵是否按下或釋放keyLocation:鍵在鍵盤中的位置shiftKey:Shift鍵是否可用77見(jiàn)源文件6-7,6-8constKEY_UP:uint=38;//上方向鍵代碼,ASCII碼constKEY_DOWN:uint=40;constKEY_RIGHT:uint=39;constKEY_LEFT:uint=37;var
speed:Number=2.5//影片剪輯移動(dòng)速度stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFun)functionkeyDownFun(e:KeyboardEvent):void{//定義接收按鍵事件的函數(shù)
var
code:uint=e.keyCode//獲取按鍵代碼
if(code==KEY_LEFT)//如果按鍵代碼等于左方向鍵代碼
{mc.x-=speed//影片影片剪輯向左移
}
if(code==KEY_RIGHT)//如果按鍵代碼等于右方向鍵代碼
{mc.x+=speed }
if(code==KEY_UP) { mc.y-=speed } }7879MC(MovieClip)事件實(shí)例講解flash/教本講解/圖形指針.swf
源碼801、元件實(shí)例命名為mc3、打開(kāi)動(dòng)作面板并編寫代碼2、新建圖層并選中第一幀81代碼分析82Event類部分屬性事件名:
ENTER_FRAME、ACTIVATE常用屬性83編程小結(jié)動(dòng)畫編程基本含義及常用術(shù)語(yǔ)目標(biāo)路徑:影片中影片剪輯實(shí)例、變量、對(duì)象的層次地址。變量:變量是用來(lái)存儲(chǔ)數(shù)值、字符串、對(duì)象、邏輯值及動(dòng)畫片段等信息的標(biāo)識(shí)符。函數(shù):可以向其傳遞參數(shù)并能夠返回值的可重復(fù)使用的代碼段。如何將腳本添加到動(dòng)畫中?Go具體如何編程,也即如何實(shí)現(xiàn)相應(yīng)功能?8410.3基本命令和程序控制結(jié)構(gòu)基本命令(函數(shù))時(shí)間軸控制函數(shù)瀏覽器和網(wǎng)絡(luò)控制函數(shù)851、時(shí)間軸控制函數(shù)跳轉(zhuǎn)函數(shù)gotoAndPlay(scene,frame)與gotoAndstop(scene,frame)參數(shù):scene,跳轉(zhuǎn)至場(chǎng)景的名稱;frame,跳轉(zhuǎn)至幀的名稱或幀數(shù)。例:gotoAndPlay(16);//gotoAndPlay("場(chǎng)景2",1);nextFrame()與prevframe()作用:跳至下一幀(前一幀)并停止播放。86play():使指定電影繼續(xù)播放。在播放電影時(shí),除非另外指定,否則從第1幀播放。如果電影播放進(jìn)程被GoTo(跳轉(zhuǎn))Stop(停止)語(yǔ)句停止,則必須使用play語(yǔ)句才能重新播放。Stop():停止當(dāng)前播放的電影,該動(dòng)作最常見(jiàn)的運(yùn)用是使用按鈕控制電影剪輯。例如,如果需要某個(gè)動(dòng)畫在播放完畢后停止而不是循環(huán)播放,則可以在電影剪輯的最后一幀附加Stop(停止播放電影)動(dòng)作。StopAllSounds():使當(dāng)前播放的所有聲音停止播放,但是不停止動(dòng)畫的播放,若動(dòng)畫重復(fù)播放,聲音將重新開(kāi)始。當(dāng)按鈕被單擊時(shí),電影中的所有聲音將停止播放87實(shí)例講解:Flash播放進(jìn)度控制動(dòng)畫的第一幀(關(guān)鍵幀)的腳本://當(dāng)前狀態(tài)是否為暫停的標(biāo)志變量var
pause_flag:Boolean=false;//用于記錄動(dòng)畫暫停在哪一幀var
pauseFrame:int=0;stop();//使影片開(kāi)始處于停止?fàn)顟B(tài)//分別給舞臺(tái)、開(kāi)始按鈕、暫停按鈕添加偵聽(tīng)stage.addEventListener(Event.ENTER_FRAME,showcurFrame);btn_play.addEventListener(MouseEvent.CLICK,moviePlay);btn_pause.addEventListener(MouseEvent.CLICK,moviePause);Flash\教本講解\影片播放進(jìn)度控制.swf《待續(xù)》88《續(xù)》
892、瀏覽器和網(wǎng)絡(luò)控制函數(shù)fscommand命令fscommand命令可以實(shí)現(xiàn)對(duì)影片瀏覽器的控制。另外,配合JavaScript腳本語(yǔ)言,fscommand命令成為Flash和外界溝通的橋梁。語(yǔ)法格式:fscommand(命令,參數(shù));一個(gè)是可以執(zhí)行的命令,另一個(gè)是執(zhí)行命令的參數(shù)。命令參數(shù)功能說(shuō)明quit沒(méi)有參數(shù)關(guān)閉影片播放器fullscreentrueorfalse用于控制是否讓影片播放器成為全屏播放模式。true為是,false為不是。allowscaletrueorfalsefalse讓影片畫面始終以100%的方式呈現(xiàn),不會(huì)隨著播放器窗口的縮放而跟著縮放;true則正好相反。showmenutrueorfalsetrue代表當(dāng)用戶在影片畫面上右擊時(shí),可以彈出全部命令的右鍵菜單,false則表示命令菜單里只顯示“AboutShockwave”信息。exec應(yīng)用程序的路徑從Flash播放器執(zhí)行其他應(yīng)用軟件trapallkeystrueorfalse用于控制是否讓播放器鎖定鍵盤的輸入,true為是,false為不是。這個(gè)命令通常用在Flash以全屏幕播放的時(shí)候,避免用戶按下Esc鍵,解除全屏幕播放。90實(shí)例代碼剖析:fscommand命令實(shí)例“action”圖層第一幀:var
full:Boolean,showmenu:Boolean,allowscale:Boolean;“退出”按鈕:functionfunQuit(e:MouseEvent){
fscommand("quit","true");}“全屏”按鈕functionfunFullscreen(e:MouseEvent){ full=!full;
fscommand("fullscreen",full);}“固定大小”按鈕functionfunAllowscale(e:MouseEvent){
allowscale=!allowscale;
fscommand("allowscale",allowscale);}……91getURL(url[,window[,"variables"]])將來(lái)自特定URL的文檔加載到瀏覽器窗口中,或?qū)⒆兞總鬟f到位于所定義URL的另一個(gè)應(yīng)用程序。也可進(jìn)行電子郵件鏈接。參數(shù)說(shuō)明:url
可從該處獲取文檔的URL。window
可選參數(shù),指定文檔應(yīng)加載到其中的窗口或HTML框架。您可輸入特定窗口的名稱,或從下面的保留目標(biāo)名稱中選擇:_self指定當(dāng)前窗口中的當(dāng)前框架。_blank指定一個(gè)新窗口。_parent指定當(dāng)前框架的父級(jí)。_top指定當(dāng)前窗口中的頂級(jí)框架。getURL(“”);跳轉(zhuǎn)URL影片92LoadMovie(URL,level/target[,method]);unloadMovie(target);LoadMovieNum(URL,level[,method]);unloadMovieNum(level);載入和卸載影片命令,參數(shù)說(shuō)明:URL:要載入的swf文件、jpeg文件的絕對(duì)或相對(duì)URL地址。Target:目標(biāo)電影剪輯的路徑。目標(biāo)電影剪輯將被載入的電影或圖像所替代。必須指定目標(biāo)電影剪輯或目標(biāo)電影的級(jí)別。二者只選其一。Level:指定載入到播放器中的電影剪輯所處的級(jí)別整數(shù)。以下是LoadMovie語(yǔ)句被附加給導(dǎo)航按鈕。在舞臺(tái)上有一個(gè)透明的電影剪輯,其實(shí)例名為mc_name。LoadMovie動(dòng)作將使該電影剪輯作為目標(biāo)參數(shù)載入SWF文件。unloadMovie(“_root.mymovie”);loadMovie(“movie.swf”,”mc_name”);Flash動(dòng)態(tài)加載外部影片源文件93LoadVariables(url,”targt”,[Variables])LoadVariablesNum(url,level,[Variables])
從外部文件讀入數(shù)據(jù)。外部文件包括文本文件、由CGI腳本生成的文本、ASP、PHP或PERL腳本。讀入的數(shù)據(jù)作為變量將被設(shè)置到播放器級(jí)別或目標(biāo)電影剪輯中。url:變量將要載入的絕對(duì)或相對(duì)路徑URL地址。level/”targt”:指定載入到Flash播放器中的變量所處的級(jí)別的整數(shù)/接受載入的變量目標(biāo)電影剪輯的路徑。這二者只能選擇其中一個(gè)。Variables:可選參數(shù),如果沒(méi)有要發(fā)送的變量,則可以忽略該參數(shù)。Flash動(dòng)態(tài)加載外部文本94Flash動(dòng)態(tài)加載外部文本要點(diǎn):動(dòng)態(tài)文本框的屬性設(shè)置(屬性窗口,變量屬性)動(dòng)態(tài)加載文本動(dòng)畫第一幀:動(dòng)態(tài)文本的scroll屬性向上按鈕:向下按鈕:源文件loadVariablesNum("text.txt",0);on(press){text1.scroll-=1;}on(press){text1.scroll+=1;}95程序控制結(jié)構(gòu)所謂流程控制,簡(jiǎn)單說(shuō)來(lái)就是控制程序的執(zhí)行順序的方式方法。Flash中動(dòng)畫依靠的是時(shí)間軸,在沒(méi)有腳本的情況下,動(dòng)畫會(huì)依照時(shí)間軸從第一幀不停的播放到最后一幀,然后重復(fù)播放或者停止。為了能更好地控制動(dòng)畫,就必須使用腳本語(yǔ)句。而要想使動(dòng)畫具有邏輯判斷的功能,就要使用流程控制語(yǔ)句。96選擇結(jié)構(gòu)在實(shí)際應(yīng)用中,有一些需要根據(jù)條件來(lái)判斷結(jié)果的問(wèn)題,條件成立是一種結(jié)果,條件不成立又是一種結(jié)果。這時(shí)就要用選擇結(jié)構(gòu)if(條件){代碼塊A;}else{代碼塊B}當(dāng)if語(yǔ)句的條件成立時(shí),執(zhí)行代碼塊A的內(nèi)容,當(dāng)條件不成立時(shí),執(zhí)行代碼塊B的內(nèi)容。關(guān)系表達(dá)式和邏輯表達(dá)式的值都是布爾(邏輯)值97選擇結(jié)構(gòu):應(yīng)用示例在原文件中,可發(fā)現(xiàn):兩個(gè)動(dòng)態(tài)文本框分別命名為“passwordTxt”、“emailTxt”在第10幀和第20幀幀標(biāo)簽分別是“startProgram”和“invalidLogin”。98按Ctrl+Enter進(jìn)行測(cè)試:99循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是三種基本程序結(jié)構(gòu)之一。它通過(guò)一定的條件控制動(dòng)作腳本中某一語(yǔ)句塊反復(fù)執(zhí)行,當(dāng)條件不滿足時(shí)就停止循環(huán)。循環(huán)結(jié)構(gòu)1:for循環(huán)for(表達(dá)式1;條件表達(dá)式;表達(dá)式2){
代碼塊}
表達(dá)式1:是一個(gè)在開(kāi)始循環(huán)序列前要計(jì)算的表達(dá)式,通常為賦值表達(dá)式。條件表達(dá)式:計(jì)算結(jié)果為true(真)或false(假)的表達(dá)式。在每次循環(huán)前計(jì)算該條件,當(dāng)條件的計(jì)算結(jié)果為true時(shí)執(zhí)行循環(huán),當(dāng)條件的計(jì)算結(jié)果為false時(shí)退出循環(huán)。表達(dá)式2:一個(gè)在每次循環(huán)迭代后要計(jì)算的表達(dá)式,通常使用帶++(遞增)或--(遞減)運(yùn)算符的賦值表達(dá)式。100for語(yǔ)句是一種循環(huán)構(gòu)造,他首先計(jì)算一次init(初始化)表達(dá)式,然后開(kāi)始一個(gè)循環(huán)序列。在該循環(huán)序列中,只要condition的計(jì)算結(jié)果為true,就執(zhí)行statement然后計(jì)算下一個(gè)表達(dá)式打開(kāi)指定目錄下“for語(yǔ)句.fla”源文件varscale:Number=1;for(vari:int=1;i<=10;i++){ scale=scale-0.1; root["ball_mc"+i].scaleX=scale; root["ball_mc"+i].scaleY=scale; trace(scale);}循環(huán)結(jié)構(gòu):應(yīng)用示例101按Ctrl+Enter進(jìn)行測(cè)試102循環(huán)結(jié)構(gòu)1:while循環(huán)while(條件表達(dá)式){
代碼塊}
條件表達(dá)式:計(jì)算結(jié)果為true(真)或false(假)的表達(dá)式。在每次循環(huán)前計(jì)算該條件,當(dāng)條件的計(jì)算結(jié)果為true時(shí)執(zhí)行循環(huán),當(dāng)條件的計(jì)算結(jié)果為false時(shí)退出循環(huán)。while語(yǔ)句的執(zhí)行過(guò)程:先計(jì)算“條件表達(dá)式”的值,判斷其值為true(真)還是false(假),如果條件是true,那么執(zhí)行循環(huán)體中的代碼塊,執(zhí)行完以后,接著開(kāi)始新一輪的循環(huán);
10310.4Flash實(shí)例屬性及剪輯的控制屬性是Flash中某個(gè)對(duì)象的各種不同特征。在Flash中,MC的屬性有30余種,介紹部分常用的、具代表性的屬性。x:影片剪輯的x坐標(biāo)(整數(shù))。y:電景剪輯的y坐標(biāo)(整數(shù))。visible:確定電景剪輯的可見(jiàn)性。當(dāng)MC的visible的值是True(或者為1)時(shí),MC為可見(jiàn);當(dāng)MC的visible的值是false(或者為0)時(shí),MC為不可見(jiàn)。alpha:電影剪輯實(shí)例的透明度。有效值為0(完全透明)到100(完全不透明)。默認(rèn)值為100。你可以通過(guò)對(duì)MC的alpha屬性在0到100之間變化的控制,制作出或明或暗或模糊的效果來(lái)。104rotation:電影剪輯的旋轉(zhuǎn)角度(以度為單位)。從0到180的值表示順時(shí)針旋轉(zhuǎn),從0到-180的值表示逆時(shí)針旋轉(zhuǎn)。height:影片剪輯的高度(以像素為單位)。width:影片剪輯的寬度(以像素為單位)。xscale:影片剪輯的水平縮放比例。yscale:影片剪輯的垂直縮放比例。當(dāng)xscale和yscale的值在0~100之間時(shí),是縮小影片剪輯為原影片剪輯的百分?jǐn)?shù);當(dāng)xscale和yscale的值大于100時(shí),是放大原影片剪輯;當(dāng)xscale或yscale為負(fù)時(shí),水平或垂直翻轉(zhuǎn)原影片剪輯并進(jìn)行縮放。不要把影片剪輯的高度與垂直縮放比例混淆,也不要把影片剪輯的寬度與水平縮放比例混為一談,例如:MC.width=50//表示把MC的寬設(shè)置為50像素;MC.xscale=50//表示把MC的水平寬度設(shè)置為原來(lái)水平寬度的50%。105currentframe:影片剪輯播放頭的當(dāng)前幀號(hào)(只讀)。
totalframes:影片剪輯中的總幀數(shù)(只讀)。ymouse:系統(tǒng)中鼠標(biāo)指針的y坐標(biāo)(只讀)。xmouse:系統(tǒng)中鼠標(biāo)指針的x坐標(biāo)(只讀)。106設(shè)置和修改剪輯的屬性前面介紹了一部分常用的MC的屬性,那么到底怎么去實(shí)現(xiàn)對(duì)其屬性的控制呢?直接設(shè)置使用句點(diǎn)表示法和一個(gè)表達(dá)式來(lái)設(shè)置影片剪輯實(shí)例的屬性。點(diǎn)語(yǔ)句的用法的一般形式為:影片剪輯名稱.屬性=屬性值;getProperty和setProperty命令setProperty命令用來(lái)設(shè)置MC的屬性,它的一般使用形式為:setProperty(目標(biāo),屬性,值);107剪輯屬性應(yīng)用示例on(release){//移動(dòng)位置
_root.fish._x=_root.fish._x-10; //或者setProperty(_root.fish,_x,getProperty(_root.fish,_x)-10);}on(release){//更改透明度
_root.fish._alpha-=20; //或setProperty(_root.fish,_alpha,fish._alpha-20);}Flash\引導(dǎo)層動(dòng)畫-海底.swf源碼-海底108setProperty(“_root.mc.mc1”,_visible,false);等價(jià)于:_root.mc.mc1._visible=false;setProperty("_root.dm",_rotation,30);可以寫成:_root.dm._rotation=30;setProperty("_root.dm1",_y,getProperty("_root.dm0",_y));可以改寫成兩句:my=_root.dm0._y;_root.dm1._y=my;mx=getProperty(“_root.mc.mc1”,_x);可以寫成:mx=_root.mc.mc1._x;109復(fù)制及清除電影剪輯命令duplicateMovieClip(目標(biāo),新名稱,深度);其中有三個(gè)參數(shù):target(目標(biāo)):要復(fù)制的電影剪輯的名稱和路徑。newname(新名稱):是復(fù)制后的電影前輯實(shí)例名稱。depth(深度):已經(jīng)復(fù)制電影剪輯的堆疊順序編號(hào)。每個(gè)復(fù)制的電影剪輯都必須設(shè)置唯一的深度,否則后來(lái)復(fù)制的電影剪輯將替換以前的復(fù)制的電影剪輯,新復(fù)制的電影剪輯總是在原電影剪輯的上方。下雨
下雪110復(fù)制的影片會(huì)保持父級(jí)影片原來(lái)的所有屬性,所以:原來(lái)的影片是靜止的,復(fù)制后的影片也靜止,并且一個(gè)疊放在另一個(gè)上。原來(lái)的影片在做補(bǔ)間運(yùn)動(dòng),那么復(fù)制品也要做同樣的運(yùn)動(dòng),復(fù)制的影片始終從第一幀開(kāi)始播放。復(fù)制影片經(jīng)常要與影片屬性控制(特別是_x,_y,_alpha,_rotation,_xscale,_yscale等屬性)結(jié)合才能更好地發(fā)揮復(fù)制效果。111removeMovieClip(影片剪輯實(shí)例名);這個(gè)命令只有一個(gè)參數(shù),那就是復(fù)制后的影片剪輯實(shí)例名稱。for(I=1;I<10;I++){//變量I從1開(kāi)始,到9為止,變量每次加1
duplicateMovieClip(”_root.a”,”a”+I,I);}上面這段程序代碼對(duì)一個(gè)名字為a的影片剪輯實(shí)例進(jìn)行復(fù)制,復(fù)制后的實(shí)例名稱為a1,a2,…a9,深度分別為1,2,…9。那么,在刪除這些復(fù)制的影片剪輯實(shí)例時(shí),你可以用下面的循環(huán)語(yǔ)句:for(I=1;I<10;I++){
removeMovieClip(”a”+i);}112剪輯屬性控制綜合示例:星空制作地球以及月球矢量圖繪制月球繞地球旋轉(zhuǎn)的引導(dǎo)動(dòng)畫制作一個(gè)星星漸變動(dòng)畫添加腳本for(j=1;j<=10;j++){
varx=Math.random()*700;
vary=Math.random()*320-50;
duplicateMovieClip("star","star"+g_count,g_count);
setProperty("star"+g_count,_x,x);
setProperty("star"+g_count,_y,y);
setProperty("star"+g_count,_alpha,Math.random()*100);
setProperty("star"+g_count,_rotation,Math.random()*360); scale=Math.random()*30;
setProperty("star"+g_count,_xscale,scale);
setProperty("star"+g_count,_yscale,scale);
g_count++; }var
g_count=1;if(g_count>1000){
g_count=1; gotoAndPlay(5);}else{ gotoAndPlay(5);}113托拽影片剪輯命令在Flash動(dòng)畫中,鼠標(biāo)突然變成一個(gè)美麗的圖畫,或者要任意拖動(dòng)動(dòng)畫中的物體,F(xiàn)lash動(dòng)畫是如何實(shí)現(xiàn)的呢?這需要兩個(gè)成對(duì)出現(xiàn)的命令:“startDrag()”拖拽影片和“stopDrag()”停止拖拽影片。放大鏡跟隨鼠標(biāo)的星星Flash/教本講解/拖拽遮罩動(dòng)畫.swf源碼114startDrag(target,[lock
,left,top,right,bottom])target
要拖動(dòng)的影片剪輯的名稱(目標(biāo)路徑)。lock
一個(gè)布爾值,指定可拖動(dòng)影片剪輯是鎖定到鼠標(biāo)位置中央(true),還是鎖定到用戶首次單擊該影片剪輯的位置上(false)。left、top、right、bottom
相對(duì)于影片剪輯父級(jí)坐標(biāo)的值,這些值指定該影片剪輯的約束矩形。動(dòng)畫中一次只能拖動(dòng)一個(gè)影片剪輯。執(zhí)行了startDrag()操作后,影片剪輯將保持可拖動(dòng)狀態(tài),直到用stopDrag()
明確停止拖動(dòng)為止,或直到對(duì)其它影片剪輯調(diào)用了startDrag()動(dòng)作為止。stopDrag()無(wú)參數(shù)。停止當(dāng)前的拖動(dòng)操作。115創(chuàng)建“星星”影片剪輯知識(shí)要點(diǎn):duplicateMovieClip()復(fù)制語(yǔ)句用startDrag()拖動(dòng)影片剪輯Mouse.hide()和Mouse.show()鼠標(biāo)隱藏和顯示語(yǔ)句setProperty()影片剪輯的屬性設(shè)置語(yǔ)句for循環(huán)語(yǔ)句Flash/教本講解/跟隨鼠標(biāo)的星星.swf源碼116代碼分析:代替光標(biāo)的星星:創(chuàng)建“星星”實(shí)例,命名為mc在影片第一幀書寫代碼:
Mouse.hide();
startDrag(“mc”);跟隨光標(biāo)的小星星:第一幀:var
g_count=0;第二幀:for(vari=0;i<2;i++)//生成兩個(gè)位于鼠標(biāo)位置的小星星duplicateMovieClip("star","star"+g_count,g_count);setProperty("star"+g_count,_x,_root._xmouse+random(20));setProperty("star"+g_count,_y,_root._ymouse+random(6));setProperty("star"+g_count,_rotation,random(40)-20);……//對(duì)顏色、大小等屬性進(jìn)行隨機(jī)設(shè)置g_count++;}第三幀:gotoAndPlay(2);117常用對(duì)象簡(jiǎn)介(高級(jí)編程)Math作為一門編程語(yǔ)言,進(jìn)行數(shù)學(xué)計(jì)算是必不可少的。在數(shù)學(xué)計(jì)算中經(jīng)常會(huì)使用到數(shù)學(xué)函數(shù),如取絕對(duì)值、開(kāi)方、取整等,還有一種重要的函數(shù)是隨機(jī)函數(shù)。Color運(yùn)用好的色彩可以使Flash作品具有更大的感染力,要做出好的作品在色彩搭配和控制上都得搭配合適才行。在ActionScript中,Color對(duì)象專門用來(lái)管理顏色。使用Color對(duì)象可以實(shí)現(xiàn)許多色彩特效。DateDate對(duì)象使你可以獲取相對(duì)于通用時(shí)間或相對(duì)于運(yùn)行FlashPlayer的操作系統(tǒng)的日期和時(shí)間值。Sound在時(shí)間軸中直接嵌入聲音是制作FlashMV的一種通用手法,但是這種方法除了從頭至尾地播放聲音外,并不能對(duì)聲音進(jìn)行很好的控制。Key118MathMath.abs絕對(duì)值函數(shù)作用:用來(lái)計(jì)算一個(gè)數(shù)的絕對(duì)值。例如:計(jì)算-9的絕對(duì)值,賦給x:x=Math.abs(-9);Math.round
四舍五入取整函數(shù)作用:方法將一個(gè)浮點(diǎn)數(shù)四舍五入為最接近的整數(shù)。例如:9.4的取整,即輸出9。trace(Math.round(9.4));Math.min、Math.max
最大、最小值函數(shù)作用:Math.min方法取兩個(gè)數(shù)中較小的一個(gè)數(shù),Math.max方法取兩個(gè)數(shù)中較大的一個(gè)數(shù)。例如:trace(Math.min(9,
8));//輸出窗口中顯示:8trace(Math.max(9,
8));//輸出窗口中顯示:9Math.sqrt平方根函數(shù)作用:計(jì)算一個(gè)數(shù)的平方根,例如:計(jì)算64的平方根:trace(Math.sqrt(64));//輸出窗口中顯示:8Math.random()隨機(jī)數(shù)函數(shù)作用:該方法返回一個(gè)大于或等于0并且小于1的隨機(jī)浮點(diǎn)數(shù)。例如:返回0、1、2、3或4中的一個(gè)隨機(jī)值:Math.random()*5;隨機(jī)數(shù)在Flash中的應(yīng)用非常廣泛。一些下雨、下雪的場(chǎng)景動(dòng)畫中常常用到隨機(jī)數(shù)的設(shè)定,以取得一種自然的特效。119ColornewColor()作用:創(chuàng)建Color對(duì)象的實(shí)例。例如:myColor
=
new
Color(myMC);setRGB()作用:設(shè)置影片剪輯實(shí)例對(duì)象的RGB值,即顏色。setRGB的參數(shù)是以十六進(jìn)制表示的,0x表示十六進(jìn)制,后面的6位數(shù)字每?jī)晌粸橐唤M,分別表示紅、綠、藍(lán)3種顏色成份。如0xFF0000表示純紅,0x00FF00表示純綠,0x0000FF表示純藍(lán),0xFFFF00表示純黃。例如:myColor.setRGB(0xFF0000);getRGB()作用:獲取由setRGB方法指定的顏色值。實(shí)例:完善跟隨鼠標(biāo)的星星動(dòng)畫120DatenewDate()作用:創(chuàng)建一個(gè)Date對(duì)象的實(shí)例。例如:myDate=newDate(2003,7,8);這是指定時(shí)間創(chuàng)建一個(gè)Date對(duì)象的實(shí)例。getDate()作用:獲取系統(tǒng)時(shí)間來(lái)創(chuàng)建Date對(duì)象的實(shí)例。例如:myDate=newDate();year=myDate.getYear();121SoundnewSound()作用:創(chuàng)建Sound對(duì)象的實(shí)例。例如:mySound=newSound();attachSound()作用:在影片播放時(shí)將【庫(kù)】中的聲音元件附加到場(chǎng)景中。要使用該方法將聲音附加到場(chǎng)景中,首先需要在【庫(kù)】中為聲音添加鏈接。在要添加鏈接的聲音元件上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【鏈接】命令,彈出【鏈接屬性】對(duì)話框,選擇【為腳本導(dǎo)出】和【第一幀導(dǎo)出】?jī)蓚€(gè)選項(xiàng)。然后才可以在程序中編寫類似于下面的程序代碼:mySound.attachSound("music");start()和stop()作用:讓聲音開(kāi)始播放和停止用Sound對(duì)象播放的聲音。例如:mySound.start();//開(kāi)始播放聲音on(release){
mySound.stop();//停止播放聲音}122腳本綜合實(shí)例一:石英鐘知識(shí)要點(diǎn):影片剪輯的onLoad事件影片剪輯的onEnterFrame事件Date對(duì)象應(yīng)用Color對(duì)象應(yīng)用if語(yǔ)句應(yīng)用Flash\教本講解\石英鐘.swf123時(shí)針顯示初始化:_root.onLoad=function(){timedate=newDate(); //初始化日期以及星期
year=timedate.getFullYear()
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能交通系統(tǒng)留置擔(dān)保合同4篇
- 2025年度高端商務(wù)場(chǎng)合室內(nèi)外綠植花卉租賃服務(wù)合同4篇
- 2025版房屋租賃管理服務(wù)合同范本4篇
- 二零二五版高端住宅互換交易服務(wù)合同3篇
- 二零二五年度航空航天器研發(fā)與技術(shù)支持服務(wù)合同2篇
- 2025年度航空航天設(shè)備維護(hù)服務(wù)合同范本正規(guī)范本4篇
- 2025年度住宅樓消防設(shè)施檢測(cè)及維修合同4篇
- 2025年度拆除工程合同范本:拆除項(xiàng)目綜合管理協(xié)議4篇
- 2025版綠色低碳林業(yè)發(fā)展林木砍伐與種植一體化承包合同4篇
- 嚴(yán)格危險(xiǎn)品航運(yùn)安全管理合同書版B版
- 航道整治課程設(shè)計(jì)
- SQL Server 2000在醫(yī)院收費(fèi)審計(jì)的運(yùn)用
- 《FANUC-Oi數(shù)控銑床加工中心編程技巧與實(shí)例》教學(xué)課件(全)
- 微信小程序運(yùn)營(yíng)方案課件
- 陳皮水溶性總生物堿的升血壓作用量-效關(guān)系及藥動(dòng)學(xué)研究
- 安全施工專項(xiàng)方案報(bào)審表
- 學(xué)習(xí)解讀2022年新制定的《市場(chǎng)主體登記管理?xiàng)l例實(shí)施細(xì)則》PPT匯報(bào)演示
- 好氧廢水系統(tǒng)調(diào)試、驗(yàn)收、運(yùn)行、維護(hù)手冊(cè)
- 中石化ERP系統(tǒng)操作手冊(cè)
- 五年級(jí)上冊(cè)口算+脫式計(jì)算+豎式計(jì)算+方程
- 氣體管道安全管理規(guī)程
評(píng)論
0/150
提交評(píng)論