版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第十章 交互動畫基礎(chǔ)1目錄10.1ActionScript語言簡介10.2添加動作的基本方法10.3基本命令和程序控制結(jié)構(gòu)10.4Flash實(shí)例屬性及剪輯的控制2教學(xué)目的和要求了解ActionScript語言的來源以及概念,理解面向?qū)ο蟮木幊?。理解ActionScript的常用術(shù)語:事件、函數(shù)、方法、屬性、變量、關(guān)鍵字、運(yùn)算符等;理解函數(shù)和方法的區(qū)別。掌握編程中常用的事件處理程序。掌握為Flash動畫添加動作的基本方法,掌握“行為”面板的使用。掌握“動作”面板的使用及相關(guān)選項(xiàng),了解ActionScript編程環(huán)境(使用提示和語法檢查等)。3
在欣賞Flash動畫時(shí),常??吹斤h落的雪花、淅瀝的小雨等場景,還有一些Flash小游戲讓人們玩得不亦樂乎,其實(shí)這些動畫很大程度上是依賴Actions語句對動畫進(jìn)行編程而實(shí)現(xiàn)的。有些動畫甚至根本不需要制作任何動畫就可以直接應(yīng)用Actions語句來實(shí)現(xiàn)。
ActionsScript實(shí)際是一種腳本語言,主要用來對動畫進(jìn)行編程,使用它可以使動畫具有交互性,在一些動畫中起到畫龍點(diǎn)睛的效果。
Flash初學(xué)者可能會問“ActionScript在哪里呢?”在Flash中有一個(gè)“動作”面板,F(xiàn)lash中的所有腳本語言都可以在這里找到,展開的“動作”面板如圖所示??梢赃x擇[窗口][開發(fā)面板][動作]菜單命令打開“動作”面板。4AS動畫欣賞2Flash\教本講解\北京焰火.swfFlash\教本講解\北京焰火.swf5AS動畫欣賞1-數(shù)字世界flash/腳本動畫--數(shù)字天地.swf610.1ActionScript語言簡介基本內(nèi)容:語言簡介:ActionScript語言的來源以及概念,面向?qū)ο蟮木幊??;菊Z法:ActionScript的基本語法介紹:事件、函數(shù)、方法、屬性、變量、關(guān)鍵字、目標(biāo)路徑等;變量與函數(shù)。7ActionScript語言ActionScript是用來控制Flash影片的編程語言。同時(shí)它是一種非常簡單的語言,簡單的語言能實(shí)現(xiàn)一些非常高級的操作。AS語言的編寫很大程度上是從列表中選擇語句和參數(shù)。AS是一種腳本語言,非常易于理解,即使有很少或沒有編程經(jīng)驗(yàn),也會很容易掌握,因?yàn)锳S語言看起來像是普通的英語。ActionScript起源ActionScript是基于JavaScript的國際規(guī)范ECMA-262創(chuàng)建的。因此它起源于JavaScript,但是和JavaScript又不完全相同。8ActionScript1.0(Flash1.0-6.0)對應(yīng)的虛擬機(jī)為AVM1,基于ECMA-262V2(相當(dāng)于JavaScript1.3)ActionScript2.0(Flash7.0-8.0)對應(yīng)的虛擬機(jī)為AVM1,基于ECMA-262V3(相當(dāng)于JavaScript1.5)ActionScript3.0(Flash9.0-?)對應(yīng)的虛擬機(jī)為AVM2,基于ECMA-262V4(相當(dāng)于JavaScript2.0)9ActionScript3.0的腳本編寫功能超越了
ActionScript
的早期版本。它旨在方便創(chuàng)建擁有大型數(shù)據(jù)集和面向?qū)ο蟮目芍赜么a庫的高度復(fù)雜應(yīng)用程序。雖然
ActionScript3.0對于在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言ActionScript是一種面向?qū)ο蟮木幊陶Z言,意味著AS在大多數(shù)時(shí)間是在處理和控制Flash中的各種對象(例如按鈕、影片剪輯),AS檢查及修改對象的屬性;并對這些對象內(nèi)置的方法事件進(jìn)行處理。例如,可以用AS修改一個(gè)圖形實(shí)例的顏色屬性;在AS中處理某個(gè)按鈕實(shí)例的單擊事件。11動作腳本可以添加到時(shí)間軸的任意關(guān)鍵幀上,時(shí)間軸既可以是主時(shí)間軸,也可以是影片剪輯的時(shí)間軸。添加腳本的關(guān)鍵幀會以一個(gè)小寫的“a”標(biāo)注。添加在時(shí)間軸上的動作腳本有時(shí)稱為幀動作或幀程序。12動作腳本還可以存在于單獨(dú)的外部類文件中(.as)135.2動作面板和腳本窗口
在默認(rèn)情況下,[動作]面板位于工作區(qū)下部。如果沒有顯示[動作]面板,可以執(zhí)行[窗口]—〉[動作]菜單命令?;虬碏9快捷鍵打開。14[動作]面板有3部分組成:動作工具箱腳本導(dǎo)航器腳本編輯窗為用戶創(chuàng)建和編輯管理腳本提供了強(qiáng)大的支持。通過動作面板,可以創(chuàng)建和編輯對象或幀上的AS代碼。15動作工具箱腳本編輯窗腳本導(dǎo)航16新建Flash文檔,單擊腳本窗口上方的[腳本助手]按鈕,切換到腳本助手模式。此時(shí)腳本工具箱中的顯示發(fā)生變化。17要顯示[腳本]窗口,可以執(zhí)行[文件]—〉[新建]—〉菜單命令,在[新建文檔中]對話框的類型列表中選擇“ActionScript文件”,單擊[確定]按鈕。(也可以執(zhí)行[文件]—〉[打開]菜單命令,選擇已有的AS文件)1819第一個(gè)交互動畫:flash/教本講解/電影剪輯控制動畫.swf源碼2021使用“動作”面板基本步驟:選中預(yù)添加行為的對象:關(guān)鍵幀從“動作”面板左側(cè)的函數(shù)列表中選擇需要的內(nèi)容(函數(shù)或者屬性)。根據(jù)對代碼進(jìn)行修改。返回22初識ActionScript
在編寫執(zhí)行事件處理的ActionScript
代碼時(shí),您需要識別三個(gè)重要元素:■事件源:發(fā)生該事件的是哪個(gè)對象?例如,哪個(gè)按鈕會被單擊,事件源也稱為“事件目標(biāo)”,因?yàn)镕lashPlayer將此對象(實(shí)際在其中發(fā)生事件)作為事件的目標(biāo)?!鍪录簩⒁l(fā)生什么事情,以及您希望響應(yīng)什么事情?識別事件是非常重要的,因?yàn)樵S多對象都會觸發(fā)多個(gè)事件?!鲰憫?yīng)函數(shù):當(dāng)事件發(fā)生時(shí),您希望執(zhí)行哪些步驟?23“事件”就是所發(fā)生的、ActionScript
能夠識別并可響應(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將會運(yùn)行給這些事件指定的函數(shù)代碼。26第二個(gè)交互動畫實(shí)例鼠標(biāo)或者鍵盤控制影片剪輯的位置272829ActionScript的術(shù)語簡介基本語法目標(biāo)路徑:影片中影片剪輯實(shí)例、變量、對象的層次地址。變量:變量是用來存儲數(shù)值、字符串、對象、邏輯值及動畫片段等信息的標(biāo)識符。函數(shù):可以向其傳遞參數(shù)并能夠返回值的可重復(fù)使用的代碼段。事件:當(dāng)影片播放時(shí)發(fā)生的動作。屬性:定義對象的特征。方法:分派給對象的函數(shù)。3031區(qū)分大小寫點(diǎn)語法動作腳本語句以分號(;)結(jié)束注釋關(guān)鍵字:具有特殊意義的AS保留字。privatefunctiongetCurrentDate(){
//創(chuàng)建新的Date對象
myDate=newDate();//將月份數(shù)轉(zhuǎn)換為月份名稱currentMonth=myDate.getMonth();monthName=calcMonth(currentMonth);year=myDate.getFullYear();currentDate=myDate.getDate();}
動作腳本語句以分號(;)結(jié)束,如以下示例所示:varcolumn=passedDate.getDay();varrow=0;點(diǎn)(.)用于指示與對象或影片剪輯相關(guān)的屬性或方法。它還用于標(biāo)識影片剪輯、變量、函數(shù)或?qū)ο蟮哪繕?biāo)路徑。表達(dá)式ballMC.x
引用影片剪輯實(shí)例ballMC
的x屬性ballMC.play();在剪輯ballMC
的時(shí)間軸中移動播放頭root.functions.buildGameBoard();調(diào)用主時(shí)間軸上影片剪輯functions中的函數(shù)buildGameBoard():基本語法//創(chuàng)建三個(gè)不同的變量var
myVar=10;var
myvar=10;var
mYvAr=10;
動作腳本保留一些單詞用于該語言中的特定用途,不能將它們用作標(biāo)識符,例如變量、函數(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/教本講解/美國地圖.swf34目標(biāo)路徑SWF文件中影片剪輯實(shí)例名稱、變量和對象的分層結(jié)構(gòu)地址。
35向Flash影片中加入元件實(shí)例時(shí),它被放入到一定影片層級中。Flash影片的主時(shí)間軸為最底層,稱為root絕對路徑以文檔加載到其中的層名開始,一直延續(xù)到顯示列表中的目標(biāo)實(shí)例。也可以使用別名root來指示當(dāng)前層的最頂層時(shí)間軸。root.westCoast.oregon
相對路徑取決于控制時(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)行中不會改變的量。變量是程序運(yùn)行中可以改變的量。變量實(shí)際上就是一個(gè)信息容器,用來存儲Flash播放過程需要的一些信息。變量可以存放任何數(shù)據(jù)類型,包括數(shù)字值(如:myNumber)、字符串值(如:myString)、邏輯值、對象或電影剪輯等。在Flash中,需要明確地聲明變量數(shù)字、字符串或其他函數(shù)類型。38變量的作用域變量的作用域,是指能夠識別和引用該變量的區(qū)域。也就是變量在什么范圍內(nèi)是可以訪問的:全局變量:即使沒有使用目標(biāo)路徑指定,也可以在任何時(shí)間軸內(nèi)有效,可以在當(dāng)前時(shí)間軸內(nèi)有效。變量聲明后,在聲明它的整個(gè)層級(Level)的時(shí)間線內(nèi)它是可訪問的。應(yīng)確保首先初始化變量,然后嘗試在腳本中訪問它。例如,如果將代碼var
x
=
10;
放置在第20幀上,則附加到第20幀之前的任何幀上的腳本都無法訪問該變量的數(shù)值。本地(局部)變量:在自身代碼塊中有效的變量(在大括號內(nèi))。就是在聲明它的語句塊內(nèi)(例如一個(gè)函數(shù)體)是可訪問的變量,通常是為避免沖突和節(jié)省內(nèi)存占用而使用。39聲明和使用變量使用變量前,使用var命令先加以聲明。var
myNumber:Number=7;var
myString:String="FlashActionScript";varcounter;簡單示例全局變量可以在整個(gè)Movie中共享;局部變量只在它所在的代碼塊(大括號之間)中有效。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í)對該全局變量不具有訪問權(quán)限返回41常/變量:數(shù)據(jù)類型■String:一個(gè)文本值■Numeric:對于numeric型數(shù)據(jù),ActionScript3.0包含三種特定的數(shù)據(jù)類型:■Number:任何數(shù)值,包括有小數(shù)部分或沒有小數(shù)部分的值■int:一個(gè)整數(shù)(不帶小數(shù)部分的整數(shù))■uint:一個(gè)“無符號”整數(shù),即不能為負(fù)數(shù)的整數(shù)■Boolean:一個(gè)true或false值,例如開關(guān)是否開啟或兩個(gè)值是否相等42■MovieClip:影片剪輯元件■TextField:動態(tài)文本字段或輸入文本字段■SimpleButton:按鈕元件■Date:有關(guān)時(shí)間中的某個(gè)片刻的信息(日期和時(shí)間)43常/變量:常見的數(shù)據(jù)類型
字符串:字符串是諸如字母、數(shù)字和標(biāo)點(diǎn)符號的序列。在動作腳本語句中輸入字符串的方式是將其放在單引號和雙引號之間,字符之間串被當(dāng)作字符而不是變量進(jìn)行處理。例如:在語句中favoriteBand=“L7”。vars1:String=“string”;vars2:String=“zifuchuan”;44布爾值(Boolean):布爾值是true和false中的一個(gè)。動作腳本也會在適當(dāng)時(shí)將值true和false轉(zhuǎn)換為1和0。布爾值經(jīng)常與邏輯運(yùn)算一起使用。var
isTouching:Boolean=false;45Number數(shù)據(jù)類型Number數(shù)據(jù)類型可以表示整數(shù)、無符號整數(shù)和浮點(diǎn)數(shù)。但是,為了盡可能提高性能,應(yīng)將Number數(shù)據(jù)類型僅用于浮點(diǎn)數(shù)。int
數(shù)據(jù)類型int
數(shù)據(jù)類型在內(nèi)部存儲為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)部存儲為32位無符號整數(shù),它包含一組介于0和4,294,967,295(232-1)之間的整數(shù)(包括0和4,294,967,295)。uint
數(shù)據(jù)類型可用于要求非負(fù)整數(shù)的特殊情形。必須使用uint
數(shù)據(jù)類型來表示像素顏色值46
空值數(shù)據(jù)類型(Null):空值數(shù)據(jù)類型只有一個(gè)值,即Null。它意味著沒有值,即缺少數(shù)據(jù)。Null值可以用在各種情況中,如指示變量尚未接受到值;指示變量不再包含值;指示函數(shù)沒有可以返回的值等。作為函數(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ù)類型不再是指定給沒有類型注釋的變量的默認(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)測試和調(diào)試程序時(shí),可以使用typeof()運(yùn)算符來確定數(shù)據(jù)類型,如trace(typeof(myVar));語句將在[輸出]面板中顯示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ù)將返回原對象。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。對于Number數(shù)據(jù)類型,如果值為NaN,則結(jié)果也為false。下面的示例說明在轉(zhuǎn)換-1、0和1等數(shù)字時(shí)的結(jié)果:var
myNum:Number;for(myNum=-1;myNum<2;myNum++){
trace("Boolean("+myNum+")is"+Boolean(myNum));}本示例的輸出結(jié)果說明在這三個(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打開指定目錄下的“變量.fla”源文件。選擇舞臺上的“panda”影片剪輯,在[動作]面板中添加如下代碼: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)行測試:57ActionScript函數(shù)“函數(shù)”(function)就是在程序中可以重復(fù)使用的代碼,你可以將需要處理的值或?qū)ο笸ㄟ^參數(shù)的形式傳遞給函數(shù),然后由函數(shù)得到結(jié)果,從另一個(gè)角度說,函數(shù)存在目的就是為了簡化編程的負(fù)擔(dān),減小代碼量和提高效率。(1)系統(tǒng)函數(shù)用戶在編寫程序的時(shí)候可以直接拿來使用。下面是一些常用的系統(tǒng)函數(shù)。(2)自定義函數(shù)除了系統(tǒng)函數(shù),我們在編寫程序時(shí)還需要自己定義一些函數(shù),用這些函數(shù)去完成指定的功能。講述重點(diǎn)58系統(tǒng)函數(shù)時(shí)間軸控制函數(shù):包括用來控制影片播放進(jìn)度的各種命令。瀏覽器/網(wǎng)絡(luò)函數(shù)控制web瀏覽器以及加/卸載額外影片文件的命令。影片剪輯控制函數(shù)用來設(shè)置及管理Flash中的各種元件的實(shí)例。打印函數(shù)其他函數(shù)數(shù)學(xué)函數(shù)包括對數(shù)字執(zhí)行各種特定數(shù)學(xué)操作的函數(shù)。轉(zhuǎn)換函數(shù)將數(shù)據(jù)從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。59常用內(nèi)置函數(shù)示例Play/Stop:控制影片開始/停止播放。gotoAndPlay:將播放頭轉(zhuǎn)到場景中指定的幀并從該幀開始播放。fscommand
:將消息發(fā)送給FlashPlayer或?yàn)g覽器。getURL
:將特定URL的文檔加載到瀏覽器中,實(shí)現(xiàn)超鏈接功能duplicateMovieClip
:復(fù)制一個(gè)影片剪輯的實(shí)例Getproperty:返回指定電影剪輯的屬性。startDrag/stopDrag:開始/停止拖動一個(gè)影片剪輯。TargetPath:返回指定電影剪輯的目標(biāo)路徑字符串。GetVersion:函數(shù)獲取Flashplay的版本號。GetTimer:影片開始播放以來經(jīng)過的毫秒數(shù)。Eval:函數(shù)返回由表達(dá)式指定和變量的值。int:數(shù)學(xué)函數(shù),將字符串分析為整數(shù)。IsNaN:數(shù)學(xué)函數(shù),測試某數(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ù)簡單應(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添加動作的基本方法交互功能使Flash不僅僅局限于演示型的動畫設(shè)計(jì),而更使之成為強(qiáng)大的交互程序設(shè)計(jì)平臺。在“動作”面板中進(jìn)行編輯動作面板中的代碼要與Flash動畫播放過程中特定的事件對應(yīng),所謂事件,就是動畫播放進(jìn)程中所發(fā)生的可獨(dú)立識別的事情,例如鼠標(biāo)經(jīng)過按鈕、單擊按鈕、動畫播放到某一個(gè)關(guān)鍵幀等等。在利用Flash設(shè)計(jì)交互程序時(shí),事件是其中最基礎(chǔ)的一個(gè)概念。通過對事件編輯代碼,動畫可以實(shí)現(xiàn)與用戶交互及響應(yīng)。62事件分類及處理事件的方法Flash中的事件包括用戶事件和系統(tǒng)事件兩類。用戶事件是指用戶直接交互操作而產(chǎn)生的事件。例如:鼠標(biāo)單擊事件按下鍵盤鍵事件系統(tǒng)事件是指Flash動畫在播放過程中自動生成的事件。例如:動畫播放到某個(gè)關(guān)鍵幀影片剪輯在舞臺上第一次出現(xiàn)63事件的產(chǎn)生以及處理不同的代碼編寫方式對不同的事件進(jìn)行響應(yīng)處理:當(dāng)在時(shí)間軸上播放到某一特定關(guān)鍵幀時(shí)。直接在關(guān)鍵幀所對應(yīng)的腳本輸入?yún)^(qū)編寫行為代碼響應(yīng)其他事件(例如:單擊動畫中的某個(gè)元件、按下鍵盤上的按鍵、某個(gè)影片剪輯載入或卸載)利用事件偵聽器方法編寫代碼,代碼編輯區(qū)位:時(shí)間軸的第一幀的腳本編輯區(qū)與動畫文件關(guān)聯(lián)的外部類(class)文件64關(guān)鍵幀所屬代碼:直接在腳本輸入?yún)^(qū)編寫直接在腳本輸入?yún)^(qū)編寫行為代碼(動畫示例)1、放置元件的三個(gè)實(shí)例在舞臺上,并分別命名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)釋放鼠標(biāo)按鈕時(shí),將執(zhí)行條件腳本,然后放下該對象。flash/教本講解/電影剪輯控制動畫.swf673、編寫moviePlay函數(shù)4、將元件實(shí)例btn_play與函數(shù)moviePlay關(guān)聯(lián)起來1、用屬性面板將動畫中的按鈕實(shí)例命名(btn_play)2、新建圖層并單擊其第一幀(關(guān)鍵幀),F(xiàn)9打開動作面板68事件偵聽器方法添加事件偵聽addEventListener
為一個(gè)事件添加一個(gè)監(jiān)聽,比如鼠標(biāo)單擊,鍵盤某個(gè)鍵被按下等現(xiàn)在的程序都是事件驅(qū)動的,也就是你必須要知道用戶有哪些動作,才能只當(dāng)要如何去處理,事件偵聽就是起到這個(gè)作用的
69事件偵聽器方法事件偵聽器方法就是讓一個(gè)函數(shù)(稱作偵聽器)接收其他對象(事件源)生成的事件??梢远x多個(gè)函數(shù)(偵聽器)并偵聽一個(gè)對象(事件源)的事件,也可以定義函數(shù)并偵聽接收多個(gè)對象的事件。用于偵聽的函數(shù)名(偵聽器)被偵聽的對象(事件源)偵聽的事件名稱(事件)70基本格式:事件源.addEventListener(事件名,偵聽函數(shù)名)function偵聽函數(shù)名(e:事件類型){……}事件源.removeEventListener(事件名,偵聽函數(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)在舞臺中的x坐標(biāo)stageYbuttonDown//是否按下鼠標(biāo)ctrlKey//ctrl鍵是否可用73打開指定目錄下“時(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見源文件6-6var
test:Sprite=newSprite()test.graphics.beginFill(0xff9900,1)test.graphics.drawCircle(200,200,100)stage.addChild(test)/繪制一個(gè)圓添加到舞臺中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見源文件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//影片剪輯移動速度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、打開動作面板并編寫代碼2、新建圖層并選中第一幀81代碼分析82Event類部分屬性事件名:
ENTER_FRAME、ACTIVATE常用屬性83編程小結(jié)動畫編程基本含義及常用術(shù)語目標(biāo)路徑:影片中影片剪輯實(shí)例、變量、對象的層次地址。變量:變量是用來存儲數(shù)值、字符串、對象、邏輯值及動畫片段等信息的標(biāo)識符。函數(shù):可以向其傳遞參數(shù)并能夠返回值的可重復(fù)使用的代碼段。如何將腳本添加到動畫中?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)至場景的名稱;frame,跳轉(zhuǎn)至幀的名稱或幀數(shù)。例:gotoAndPlay(16);//gotoAndPlay("場景2",1);nextFrame()與prevframe()作用:跳至下一幀(前一幀)并停止播放。86play():使指定電影繼續(xù)播放。在播放電影時(shí),除非另外指定,否則從第1幀播放。如果電影播放進(jìn)程被GoTo(跳轉(zhuǎn))Stop(停止)語句停止,則必須使用play語句才能重新播放。Stop():停止當(dāng)前播放的電影,該動作最常見的運(yùn)用是使用按鈕控制電影剪輯。例如,如果需要某個(gè)動畫在播放完畢后停止而不是循環(huán)播放,則可以在電影剪輯的最后一幀附加Stop(停止播放電影)動作。StopAllSounds():使當(dāng)前播放的所有聲音停止播放,但是不停止動畫的播放,若動畫重復(fù)播放,聲音將重新開始。當(dāng)按鈕被單擊時(shí),電影中的所有聲音將停止播放87實(shí)例講解:Flash播放進(jìn)度控制動畫的第一幀(關(guān)鍵幀)的腳本://當(dāng)前狀態(tài)是否為暫停的標(biāo)志變量var
pause_flag:Boolean=false;//用于記錄動畫暫停在哪一幀var
pauseFrame:int=0;stop();//使影片開始處于停止?fàn)顟B(tài)//分別給舞臺、開始按鈕、暫停按鈕添加偵聽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)對影片瀏覽器的控制。另外,配合JavaScript腳本語言,fscommand命令成為Flash和外界溝通的橋梁。語法格式:fscommand(命令,參數(shù));一個(gè)是可以執(zhí)行的命令,另一個(gè)是執(zhí)行命令的參數(shù)。命令參數(shù)功能說明quit沒有參數(shù)關(guān)閉影片播放器fullscreentrueorfalse用于控制是否讓影片播放器成為全屏播放模式。true為是,false為不是。allowscaletrueorfalsefalse讓影片畫面始終以100%的方式呈現(xiàn),不會隨著播放器窗口的縮放而跟著縮放;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"]])將來自特定URL的文檔加載到瀏覽器窗口中,或?qū)⒆兞總鬟f到位于所定義URL的另一個(gè)應(yīng)用程序。也可進(jìn)行電子郵件鏈接。參數(shù)說明:url
可從該處獲取文檔的URL。window
可選參數(shù),指定文檔應(yīng)加載到其中的窗口或HTML框架。您可輸入特定窗口的名稱,或從下面的保留目標(biāo)名稱中選擇:_self指定當(dāng)前窗口中的當(dāng)前框架。_blank指定一個(gè)新窗口。_parent指定當(dāng)前框架的父級。_top指定當(dāng)前窗口中的頂級框架。getURL(“”);跳轉(zhuǎn)URL影片92LoadMovie(URL,level/target[,method]);unloadMovie(target);LoadMovieNum(URL,level[,method]);unloadMovieNum(level);載入和卸載影片命令,參數(shù)說明:URL:要載入的swf文件、jpeg文件的絕對或相對URL地址。Target:目標(biāo)電影剪輯的路徑。目標(biāo)電影剪輯將被載入的電影或圖像所替代。必須指定目標(biāo)電影剪輯或目標(biāo)電影的級別。二者只選其一。Level:指定載入到播放器中的電影剪輯所處的級別整數(shù)。以下是LoadMovie語句被附加給導(dǎo)航按鈕。在舞臺上有一個(gè)透明的電影剪輯,其實(shí)例名為mc_name。LoadMovie動作將使該電影剪輯作為目標(biāo)參數(shù)載入SWF文件。unloadMovie(“_root.mymovie”);loadMovie(“movie.swf”,”mc_name”);Flash動態(tài)加載外部影片源文件93LoadVariables(url,”targt”,[Variables])LoadVariablesNum(url,level,[Variables])
從外部文件讀入數(shù)據(jù)。外部文件包括文本文件、由CGI腳本生成的文本、ASP、PHP或PERL腳本。讀入的數(shù)據(jù)作為變量將被設(shè)置到播放器級別或目標(biāo)電影剪輯中。url:變量將要載入的絕對或相對路徑URL地址。level/”targt”:指定載入到Flash播放器中的變量所處的級別的整數(shù)/接受載入的變量目標(biāo)電影剪輯的路徑。這二者只能選擇其中一個(gè)。Variables:可選參數(shù),如果沒有要發(fā)送的變量,則可以忽略該參數(shù)。Flash動態(tài)加載外部文本94Flash動態(tài)加載外部文本要點(diǎn):動態(tài)文本框的屬性設(shè)置(屬性窗口,變量屬性)動態(tài)加載文本動畫第一幀:動態(tài)文本的scroll屬性向上按鈕:向下按鈕:源文件loadVariablesNum("text.txt",0);on(press){text1.scroll-=1;}on(press){text1.scroll+=1;}95程序控制結(jié)構(gòu)所謂流程控制,簡單說來就是控制程序的執(zhí)行順序的方式方法。Flash中動畫依靠的是時(shí)間軸,在沒有腳本的情況下,動畫會依照時(shí)間軸從第一幀不停的播放到最后一幀,然后重復(fù)播放或者停止。為了能更好地控制動畫,就必須使用腳本語句。而要想使動畫具有邏輯判斷的功能,就要使用流程控制語句。96選擇結(jié)構(gòu)在實(shí)際應(yīng)用中,有一些需要根據(jù)條件來判斷結(jié)果的問題,條件成立是一種結(jié)果,條件不成立又是一種結(jié)果。這時(shí)就要用選擇結(jié)構(gòu)if(條件){代碼塊A;}else{代碼塊B}當(dāng)if語句的條件成立時(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è)動態(tài)文本框分別命名為“passwordTxt”、“emailTxt”在第10幀和第20幀幀標(biāo)簽分別是“startProgram”和“invalidLogin”。98按Ctrl+Enter進(jìn)行測試:99循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是三種基本程序結(jié)構(gòu)之一。它通過一定的條件控制動作腳本中某一語句塊反復(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è)在開始循環(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語句是一種循環(huán)構(gòu)造,他首先計(jì)算一次init(初始化)表達(dá)式,然后開始一個(gè)循環(huán)序列。在該循環(huán)序列中,只要condition的計(jì)算結(jié)果為true,就執(zhí)行statement然后計(jì)算下一個(gè)表達(dá)式打開指定目錄下“for語句.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)行測試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語句的執(zhí)行過程:先計(jì)算“條件表達(dá)式”的值,判斷其值為true(真)還是false(假),如果條件是true,那么執(zhí)行循環(huán)體中的代碼塊,執(zhí)行完以后,接著開始新一輪的循環(huán);
10310.4Flash實(shí)例屬性及剪輯的控制屬性是Flash中某個(gè)對象的各種不同特征。在Flash中,MC的屬性有30余種,介紹部分常用的、具代表性的屬性。x:影片剪輯的x坐標(biāo)(整數(shù))。y:電景剪輯的y坐標(biāo)(整數(shù))。visible:確定電景剪輯的可見性。當(dāng)MC的visible的值是True(或者為1)時(shí),MC為可見;當(dāng)MC的visible的值是false(或者為0)時(shí),MC為不可見。alpha:電影剪輯實(shí)例的透明度。有效值為0(完全透明)到100(完全不透明)。默認(rèn)值為100。你可以通過對MC的alpha屬性在0到100之間變化的控制,制作出或明或暗或模糊的效果來。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è)置為原來水平寬度的50%。105currentframe:影片剪輯播放頭的當(dāng)前幀號(只讀)。
totalframes:影片剪輯中的總幀數(shù)(只讀)。ymouse:系統(tǒng)中鼠標(biāo)指針的y坐標(biāo)(只讀)。xmouse:系統(tǒng)中鼠標(biāo)指針的x坐標(biāo)(只讀)。106設(shè)置和修改剪輯的屬性前面介紹了一部分常用的MC的屬性,那么到底怎么去實(shí)現(xiàn)對其屬性的控制呢?直接設(shè)置使用句點(diǎn)表示法和一個(gè)表達(dá)式來設(shè)置影片剪輯實(shí)例的屬性。點(diǎn)語句的用法的一般形式為:影片剪輯名稱.屬性=屬性值;getProperty和setProperty命令setProperty命令用來設(shè)置MC的屬性,它的一般使用形式為:setProperty(目標(biāo),屬性,值);107剪輯屬性應(yīng)用示例on(release){//移動位置
_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)層動畫-海底.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ù)制電影剪輯的堆疊順序編號。每個(gè)復(fù)制的電影剪輯都必須設(shè)置唯一的深度,否則后來復(fù)制的電影剪輯將替換以前的復(fù)制的電影剪輯,新復(fù)制的電影剪輯總是在原電影剪輯的上方。下雨
下雪110復(fù)制的影片會保持父級影片原來的所有屬性,所以:原來的影片是靜止的,復(fù)制后的影片也靜止,并且一個(gè)疊放在另一個(gè)上。原來的影片在做補(bǔ)間運(yùn)動,那么復(fù)制品也要做同樣的運(yùn)動,復(fù)制的影片始終從第一幀開始播放。復(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開始,到9為止,變量每次加1
duplicateMovieClip(”_root.a”,”a”+I,I);}上面這段程序代碼對一個(gè)名字為a的影片剪輯實(shí)例進(jìn)行復(fù)制,復(fù)制后的實(shí)例名稱為a1,a2,…a9,深度分別為1,2,…9。那么,在刪除這些復(fù)制的影片剪輯實(shí)例時(shí),你可以用下面的循環(huán)語句:for(I=1;I<10;I++){
removeMovieClip(”a”+i);}112剪輯屬性控制綜合示例:星空制作地球以及月球矢量圖繪制月球繞地球旋轉(zhuǎn)的引導(dǎo)動畫制作一個(gè)星星漸變動畫添加腳本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動畫中,鼠標(biāo)突然變成一個(gè)美麗的圖畫,或者要任意拖動動畫中的物體,F(xiàn)lash動畫是如何實(shí)現(xiàn)的呢?這需要兩個(gè)成對出現(xiàn)的命令:“startDrag()”拖拽影片和“stopDrag()”停止拖拽影片。放大鏡跟隨鼠標(biāo)的星星Flash/教本講解/拖拽遮罩動畫.swf源碼114startDrag(target,[lock
,left,top,right,bottom])target
要拖動的影片剪輯的名稱(目標(biāo)路徑)。lock
一個(gè)布爾值,指定可拖動影片剪輯是鎖定到鼠標(biāo)位置中央(true),還是鎖定到用戶首次單擊該影片剪輯的位置上(false)。left、top、right、bottom
相對于影片剪輯父級坐標(biāo)的值,這些值指定該影片剪輯的約束矩形。動畫中一次只能拖動一個(gè)影片剪輯。執(zhí)行了startDrag()操作后,影片剪輯將保持可拖動狀態(tài),直到用stopDrag()
明確停止拖動為止,或直到對其它影片剪輯調(diào)用了startDrag()動作為止。stopDrag()無參數(shù)。停止當(dāng)前的拖動操作。115創(chuàng)建“星星”影片剪輯知識要點(diǎn):duplicateMovieClip()復(fù)制語句用startDrag()拖動影片剪輯Mouse.hide()和Mouse.show()鼠標(biāo)隱藏和顯示語句setProperty()影片剪輯的屬性設(shè)置語句for循環(huán)語句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);……//對顏色、大小等屬性進(jìn)行隨機(jī)設(shè)置g_count++;}第三幀:gotoAndPlay(2);117常用對象簡介(高級編程)Math作為一門編程語言,進(jìn)行數(shù)學(xué)計(jì)算是必不可少的。在數(shù)學(xué)計(jì)算中經(jīng)常會使用到數(shù)學(xué)函數(shù),如取絕對值、開方、取整等,還有一種重要的函數(shù)是隨機(jī)函數(shù)。Color運(yùn)用好的色彩可以使Flash作品具有更大的感染力,要做出好的作品在色彩搭配和控制上都得搭配合適才行。在ActionScript中,Color對象專門用來管理顏色。使用Color對象可以實(shí)現(xiàn)許多色彩特效。DateDate對象使你可以獲取相對于通用時(shí)間或相對于運(yùn)行FlashPlayer的操作系統(tǒng)的日期和時(shí)間值。Sound在時(shí)間軸中直接嵌入聲音是制作FlashMV的一種通用手法,但是這種方法除了從頭至尾地播放聲音外,并不能對聲音進(jìn)行很好的控制。Key118MathMath.abs絕對值函數(shù)作用:用來計(jì)算一個(gè)數(shù)的絕對值。例如:計(jì)算-9的絕對值,賦給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)用非常廣泛。一些下雨、下雪的場景動畫中常常用到隨機(jī)數(shù)的設(shè)定,以取得一種自然的特效。119ColornewColor()作用:創(chuàng)建Color對象的實(shí)例。例如:myColor
=
new
Color(myMC);setRGB()作用:設(shè)置影片剪輯實(shí)例對象的RGB值,即顏色。setRGB的參數(shù)是以十六進(jìn)制表示的,0x表示十六進(jìn)制,后面的6位數(shù)字每兩位為一組,分別表示紅、綠、藍(lán)3種顏色成份。如0xFF0000表示純紅,0x00FF00表示純綠,0x0000FF表示純藍(lán),0xFFFF00表示純黃。例如:myColor.setRGB(0xFF0000);getRGB()作用:獲取由setRGB方法指定的顏色值。實(shí)例:完善跟隨鼠標(biāo)的星星動畫120DatenewDate()作用:創(chuàng)建一個(gè)Date對象的實(shí)例。例如:myDate=newDate(2003,7,8);這是指定時(shí)間創(chuàng)建一個(gè)Date對象的實(shí)例。getDate()作用:獲取系統(tǒng)時(shí)間來創(chuàng)建Date對象的實(shí)例。例如:myDate=newDate();year=myDate.getYear();121SoundnewSound()作用:創(chuàng)建Sound對象的實(shí)例。例如:mySound=newSound();attachSound()作用:在影片播放時(shí)將【庫】中的聲音元件附加到場景中。要使用該方法將聲音附加到場景中,首先需要在【庫】中為聲音添加鏈接。在要添加鏈接的聲音元件上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【鏈接】命令,彈出【鏈接屬性】對話框,選擇【為腳本導(dǎo)出】和【第一幀導(dǎo)出】兩個(gè)選項(xiàng)。然后才可以在程序中編寫類似于下面的程序代碼:mySound.attachSound("music");start()和stop()作用:讓聲音開始播放和停止用Sound對象播放的聲音。例如:mySound.start();//開始播放聲音on(release){
mySound.stop();//停止播放聲音}122腳本綜合實(shí)例一:石英鐘知識要點(diǎn):影片剪輯的onLoad事件影片剪輯的onEnterFrame事件Date對象應(yīng)用Color對象應(yīng)用if語句應(yīng)用Flash\教本講解\石英鐘.swf123時(shí)針顯示初始化:_root.onLoad=function(){timedate=newDate(); //初始化日期以及星期
year=timedate.getFullYear()
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《單片機(jī)原理及應(yīng)用 》課件-第9章
- 質(zhì)量審計(jì)報(bào)告范文
- 五年級研究報(bào)告范文
- 員工檢索報(bào)告范文
- 家庭假期安全的重要性
- 2025年陽江a2貨運(yùn)資格證考試題
- 2025年大慶貨運(yùn)從業(yè)資格證考試模擬考試題庫
- 2025年長沙貨運(yùn)從業(yè)資格證模擬考試駕考
- 2025年哈爾濱貨運(yùn)叢業(yè)資格證試題
- 2025年黔南道路運(yùn)輸貨運(yùn)從業(yè)資格證考試項(xiàng)目
- 養(yǎng)蜂技術(shù)管理規(guī)范標(biāo)準(zhǔn)
- 初中英語比較級和最高級專項(xiàng)練習(xí)題含答案
- MOOC 質(zhì)量管理學(xué)-中國計(jì)量大學(xué) 中國大學(xué)慕課答案
- 激光技術(shù)在能源、環(huán)保、農(nóng)業(yè)等領(lǐng)域的應(yīng)用
- 國有企業(yè)職工代表大會條例實(shí)施細(xì)則
- 【高分復(fù)習(xí)筆記】周小普《廣播電視概論》筆記和課后習(xí)題詳解
- 中國玉石及玉文化鑒賞智慧樹知到期末考試答案2024年
- MOOC 物理與藝術(shù)-南京航空航天大學(xué) 中國大學(xué)慕課答案
- 《旅游財(cái)務(wù)管理》課件-1認(rèn)識旅游企業(yè)
- (正式版)JBT 5300-2024 工業(yè)用閥門材料 選用指南
- 【教案】2023年全國高考數(shù)學(xué)新課標(biāo)Ⅱ卷第11題說題稿
評論
0/150
提交評論