版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第6章面向?qū)ο蟮木幊?本章要點 6.1 “小球隨機碰撞方形邊框”動畫 6.2 “猜字母游戲”動畫 6.3 “指針鐘”動畫 6.4 “MP3播放器”動畫 習題6,6.1 “小球隨機碰撞方形邊框”動畫,6.1.1 什么是面向?qū)ο蟮木幊?1什么是面向?qū)ο蟮木幊?在20世紀80年代提出了面向?qū)ο蟮某绦蛟O計(Object Oriented Programming,OOP),它能夠有效地改進結(jié)構(gòu)化程序設計中存在的問題。它采用面向?qū)ο蟮姆椒▉斫鉀Q問題,不再將問題分解為過程,而是將問題分解為對象。在結(jié)構(gòu)化的程序設計中,要解決某一個問題,是將問題進行分解,然后用許多功能不同的函數(shù)來實現(xiàn),數(shù)據(jù)與函數(shù)是分離的。面向
2、對象的程序設計方法的思考方式是面向問題結(jié)構(gòu)的,它認為現(xiàn)實世界是由對象組成的,要解決某個問題,必須要首先確定這個問題是由哪些對象組成的。 對象是現(xiàn)實世界中可以獨立存在的、可以被區(qū)分的一個實體(也可以是一些概念上的實體),它有自己的屬性、作用于對象的操作(即作用于對象的方法)和對象響應的動作(即事件)。對象之間的相互作用通過消息傳送來實現(xiàn)。因此面向?qū)ο缶幊痰脑O計模式為“對象+消息”。 在面向?qū)ο蟮木幊讨?,有幾個很重要的基本概念:類、對象、屬性、方法、實例和繼承等?!邦悺笨梢源蛞粋€比喻,月餅模子可以看成是一個“類”,扣出的月餅是對象,每個月餅都繼承了模子(類)的屬性。比如模子的形狀是菱形,那扣出來的
3、月餅就是菱形。每個月餅還具有它自己的特有屬性,例如,某個月餅的餡有蛋黃,某個月餅的餡有棗泥。通過一些方法可以改變這些屬性,例如把月餅切成四份等。,6.1 “小球隨機碰撞方形邊框”動畫,在面向?qū)ο蟮木幊讨?,對象擁有它的屬性和方法。屬性就是一些有特殊用途的變量,方法實際上就是函數(shù),是為了完成對對象屬性進行操作的函數(shù),通過函數(shù)改變變量的值,就是改變了對象的屬性。對象是類的實例,程序是由對象組成的。面向?qū)ο蟮某绦蛟O計是將問題抽象成許多類,將對象屬性和方法封裝成一個整體,供程序設計者使用。 Flash元件庫中的元件就是“類”,由元件在舞臺工作區(qū)內(nèi)產(chǎn)生的影片剪輯實例,通過實例的“屬性”面板為一個影片剪輯實
4、例起一個名字,這個過程就是做一次new操作,將一個元件對象(類)實例化,產(chǎn)生對象。 2創(chuàng)建對象 可以使用new操作符通過Flash內(nèi)置對象類來創(chuàng)建一個對象?!癿yDate = new date();”這條語句就是使用了Flash MX 2004的日期內(nèi)置類創(chuàng)建了一個新對象(也叫實例化)。這里,對象myDate可以使用內(nèi)置對象date()的getDate()等方法和屬性。 使用new 操作符來創(chuàng)建一個對象需要使用構(gòu)造函數(shù)(構(gòu)造函數(shù)是一種簡單的函數(shù),它用來創(chuàng)建某一類型的對象)。Actionscript 的內(nèi)置對象也是一種提前寫好的構(gòu)造函數(shù)。,6.1 “小球隨機碰撞方形邊框”動畫,3訪問對象 可以使
5、用點操作符來訪問對象的屬性,在點操作符的左邊寫入對象名,點操作符右邊寫入要使用的對象。例如下面程序中,Sound1是對象,setVolume()是方法,通過點操作符來連接。 Sound1=new sound(this);/實例化一個聲音對象Sound1 Sound1.setVolume(60);/設置聲音對象Sound1的音量為60 4實例分析 (1)在第1幀舞臺工作區(qū)中創(chuàng)建一個綠色圓形的影片剪輯實例,實例名稱為“BALL”。 (2)使用Flash MX 2004的內(nèi)置類Color來實例化一個myball實例。 (3)在第1幀舞臺工作區(qū)中放置一個名稱為“AN1”的按鈕實例,在第1幀的“動作-幀
6、”面板內(nèi)加入如下程序。注意:“setRGB(0 x0000ff)”中的setRGB是內(nèi)置類Color的一個方法。其中的x是英文小寫字母,“0”為數(shù)字零,程序中的英文大小寫不可以改變。 AN1.onRelease=function() myball=new Color(BALL);/用new命令定義了一個實例myball myball.setRGB(0 x0000FF);/ 其中“0 x0000FF”是16進制數(shù),表示設置藍色 /通過myball的setRGB方法改變了myball的顏色屬性,6.1 “小球隨機碰撞方形邊框”動畫,(4)單擊“控制”“測試影片”菜單命令,單擊按鈕,舞臺工作區(qū)中的圓
7、形圖形即可從綠色變成了藍色。圓形圖形實例的顏色屬性通過實例的setRGB方法,從綠色變成了藍色。 6.1.2 數(shù)學和字符串對象 1數(shù)學(Math)對象 數(shù)學對象也不需要實例化。數(shù)學(Math)對象的常用方法在“動作”面板內(nèi)命令列表區(qū)中的“內(nèi)置類”“核心”“Math”目錄下。常用方法的格式和功能如表6-1-1所示。 2字符串(String)對象 在使用string之前,必須將string對象實例化,然后使用字符串的對象實例進行字符串的連接、分隔和大小寫轉(zhuǎn)換。 (1)將string對象實例化的格式:myString=new String(); 例如,下面這兩種方法均有效。 S1=new Strin
8、g(ABCDEFG); S2=ABCDEFG;,6.1 “小球隨機碰撞方形邊框”動畫,(2)string對象的屬性就有一個,簡介如下。 length:返回字符串的長度。例如,在舞臺工作區(qū)內(nèi)創(chuàng)建一個動態(tài)文本框,它的變量名字為LN,在“圖層1”圖層第1幀內(nèi)加入如下腳本程序,運行程序后,文本框內(nèi)會顯示26。 S1=new String(ABCDEFGHIJKLMNOPQRSTUVWXYZ); LN=S1.length (3)string對象的方法有12個,下面介紹其中的3個。 string.charAt方法 :返回指定索引數(shù)字指示的字符。字符的數(shù)目從0到字符串長度減1。例如,在舞臺工作區(qū)內(nèi)創(chuàng)建一個動
9、態(tài)文本框,它的變量名字為LN,在“圖層1”圖層第1幀內(nèi)加入如下腳本程序,運行程序后,文本框內(nèi)會顯示字母D。 S1=new String(ABCDEFGHIJKLMNOPQRSTUVWXYZ); LN=S1.charAt(3) /將返回字母D string.Concat方法:將兩個字符串組合成一個新的字符串。例如,在舞臺工作區(qū)內(nèi)創(chuàng)建一個動態(tài)文本框,它的變量名字為LN,在“圖層1”圖層第1幀內(nèi)加入如下腳本程序,運行程序后,文本框內(nèi)會顯示字母“ABC123DEF456”。 myString=ABC123;,6.1 “小球隨機碰撞方形邊框”動畫,LN=myString.concat(DEF456);/
10、將返回一個“ABC123DEF456”字符串 substr(start,length)方法:從字符串的start開始,截取長為length的子字符串。字符的數(shù)目從0到字符串長度減1。例如,在舞臺工作區(qū)內(nèi)創(chuàng)建一個動態(tài)文本框,它的變量名字為LN,在“圖層1”圖層第1幀內(nèi)加入如下腳本程序,運行程序后,文本框內(nèi)會顯示字母“CDEFGHIJKL”。 S1=new String(ABCDEFGHIJKLMNOPQRSTUVWXYZ); LN=S1.substr(2,10);,6.2 “猜字母游戲”動畫,如果要使用內(nèi)置對象,可以從指令選擇區(qū)中的“Objects”(對象)目錄中尋找,然后將要使用的對象拖曳到程
11、序編輯區(qū)中使用。 6.2.1 數(shù)組和顏色對象 1數(shù)組(Array)對象 數(shù)組對象是一種很常用的Flash Actionscript內(nèi)置對象,在數(shù)組元素“”和“”之間的名稱叫做“索引”(index),數(shù)組通常用來儲存同一類的數(shù)據(jù)。數(shù)組對象可以從“動作”面板命令列表區(qū)的“內(nèi)置類”“核心”目錄中找到。 (1)指定要使用對象屬性的元素。例如move1=a; ,move2=b; ,move3=c; 等。 (2)使用new Array( )創(chuàng)建一個數(shù)組對象并賦值。舉例如下。 myArray=new Array(); myArray0=1; myArray1=2; myArray2=3; (3)數(shù)組對象的方
12、法:數(shù)組對象的方法有12個,下面簡要介紹其中幾個。 格式:concat(array1,arrayN); 功能:用來連接array1到arrayN數(shù)組的值。,6.2 “猜字母游戲”動畫, 格式:my_array.join(separator); 功能:返回數(shù)組中的數(shù)組元素,這些數(shù)組元素用separator作為分隔符分割。如果省略此參數(shù),則使用逗號作為默認分隔符。舉例如下。 N1_array = new Array(One,Two,Three,Four,Five) trace(N1_array.join(); / 返回One,Two,Three,F(xiàn)our,F(xiàn)ive trace(N1_array.j
13、oin( * ); / 返回One*Two*Three*Four*Five trace(N1_array.join( + ); / 返回One+Two+Three+Four+Five 格式:my_array.pop() 功能:返回數(shù)組中最后一個數(shù)組元素的值,同時刪除數(shù)組中最后一個數(shù)組元素。舉例如下。 N1_array = new Array(One,Two,Three,Four,Five) SN1 = N1_array.pop(); trace(SN1);/ 返回Five SN1 = N1_array.pop(); trace(SN1);/ 返回Four 格式:my_array.push(va
14、lue,.),6.2 “猜字母游戲”動畫,功能:將一個或多個數(shù)組元素添加到數(shù)組的結(jié)尾,并返回該數(shù)組的新長度。value參數(shù)是要追加到數(shù)組中的一個或多個數(shù)組元素值。舉例如下。 N1_array = new Array(One,Two,Three,Four,Five) SN1= N1_array.push(Six, Seven); trace(SN1);/返回值為7 格式:my_array.reverse() 功能:將數(shù)組中的數(shù)組元素倒轉(zhuǎn)。舉例如下。 N1_array = new Array(One,Two,Three,Four,Five) trace(N1_array.join(); /返回值為
15、Five,F(xiàn)our,Three,Two,One (4)數(shù)組對象的屬性:數(shù)組對象的屬性只有同一個,即length屬性。length屬性可以返回數(shù)組的長度。舉例如下。 my_array = new Array(); trace(my_array.length); / 初始長度為 0 my_array0 = A; trace(my_array.length); / 將 my_array.length 更新為 1 my_array2 = AB; trace(my_array.length); / 將 my_array.length 更新為 3 my_array8 = ABC;,6.2 “猜字母游戲”動
16、畫,trace(my_array.length); / 將 my_array.length 更新為 9 2顏色(Color)對象 通過new Color()來實例化一個顏色對象。例如,在舞臺中創(chuàng)建了一個紅色方塊的影片剪輯實例,并命名為“S1”。然后使用“myColor=new Color(S1);”語句實例化一個myColor對象實例,通過這個實例的一些屬性可以得到Sample影片剪輯實例中紅色方塊的顏色值。顏色對象可以從“動作”面板命令列表區(qū)的“內(nèi)置類”“影片”目錄中找到。 (1)格式:myColor=new Color(); (2)Color對象常用的方法介紹如下。 格式:getRGB()
17、; 功能:獲得對象的顏色值。 格式:setRGB(0 xRRGGBB); 功能:通過括號中的16進制數(shù)來設置對象的顏色。RR,GG和BB取值在00到ff之間。 6.2.2 鍵盤和鼠標對象 1鍵盤(Key)對象 鍵盤對象是一種比較特殊的對象,不需要實例化就可以使用它的方法和屬性。鍵盤對象可以從“動作”面板命令列表區(qū)的“內(nèi)置類”“影片”目錄中找到。,6.2 “猜字母游戲”動畫,(1)key對象的常用方法介紹如下。 key.getAscII():返回最近一次按鍵的AscII碼。 key.getCode():返回最近一個按鍵的VirtualKey 碼。 key.isDown():當鍵盤上的任意鍵按下的
18、時候,返回true邏輯值。 key.isToggled():當小鍵盤加了字母鎖時返回true。 (2)key對象的常用屬性:key對象的常用屬性如表6-2-1所示。 2鼠標(Mouse)對象 鼠標對象不需要實例化??梢詮摹皠幼鳌泵姘迕盍斜韰^(qū)的“內(nèi)置類”“核心”目錄中找到。它有4個方法,其中的兩個介紹如下。 (1)鼠標隱藏:mouse.hide()。 (2)鼠標顯示:mouse.show()。,6.3 “指針鐘”動畫,6.3.1 時間(Date)對象 時間對象是將計算機系統(tǒng)的時間填入到對象實例中去。 (1)時間對象實例化的格式:myDate=new date(); (2)時間對象的常用方法如圖
19、6-3-1所示。,6.4 “MP3播放器”動畫,6.4.1 聲音(Sound)對象 1聲音(Sound)對象的構(gòu)造函數(shù) 格式:new Sound(target); 其中的參數(shù)target是Sound對象操作的影片剪輯實例。此參數(shù)是可選的??刹捎谩癿ySound=new Sound();”或“mySound=new Sound(target); ”命令。 功能:使用new操作符實例化sound對象,即為指定的影片剪輯創(chuàng)建新的Sound對象。如果沒有指定目標實例target(目標),則Sound對象控制影片中的所有聲音。如果指定target,則只對指定的對象起作用。 例1下面的實例創(chuàng)建了一個名字為
20、globalsound的sound對象新實例。程序中的第二行調(diào)用setVolume方法并將影片中的所有聲音的音量調(diào)整為50%。 globalsound = new Sound(); globalsound.setVolume(50); 例2下面的實例創(chuàng)建Sound對象的新實例,將目標影片剪輯myMovie傳遞給它,然后調(diào)用start方法播放myMovie中的所有聲音。 moviesound = new Sound(myMovie); moviesound.start();,6.4 “MP3播放器”動畫,2聲音對象的方法 (1)mySound.attachSound方法 格式:ySound.at
21、tachSound(“dName”);圖6-4-1 “鏈接屬性”對話框 功能:這個方法是綁定一個在“庫”面板中的聲音對象,綁定后就可以用聲音的其他方法來控制聲音的各個屬性了。其中,“idName”是指庫中聲音元件的標識符(即id)名稱,它是在“鏈接屬性”對話框“標識符”文本框中輸入的,不是聲音元件名字。 在“庫”面板中的聲音元件上,單擊鼠標右鍵,調(diào)出快捷菜單,單擊“連接”菜單命令,可調(diào)出如圖6-4-1所示的“鏈接屬性”對話框。在“標識符”文本框內(nèi)輸入元件的標識符名稱,再選擇復選框,需要的話還應該在“URL”文本框內(nèi)輸入URL數(shù)據(jù),單擊“確定”按鈕退出。,圖6-4-1 “鏈接屬性”對話框,6.4
22、 “MP3播放器”動畫,(2)Sound.getBytesLoaded方法 格式:Sound.getBytesLoaded(); 功能:返回指示所加載字節(jié)數(shù)的整數(shù)。返回為指定Sound對象加載(進入流)的字節(jié)數(shù)。可以比較getBytesLoaded的值與getBytesTotal的值,以確定已加載聲音的百分比。 (3)Sound.getBytesTotal方法 格式:Sound.getBytesTotal(); 功能:返回一個整數(shù),以字節(jié)為單位指示指定Sound對象的總大小。 (4)mySound.getPan方法 格式:mySound.getPan(); 功能:這個方法返回在上一次setPa
23、n調(diào)用中設置的面板級別,是一個從100到100之間的整值,這個值代表左右聲道的音量,100到0是左聲道的值,0到100是右聲道的值(0平衡地設置左右聲道)。該面板設置控制影片中當前和將來聲音的左右均衡。 此方法是用setVolume或setTransform方法累積的。,6.4 “MP3播放器”動畫,(5)mySound.getTransform方法 格式:mySound.getTransform(); 功能:返回聲音變化的屬性值,其中屬性有l(wèi)l(控制左聲道進入左揚聲器的音量)、lr(控制右聲道進入左揚聲器的音量)、rr(控制右聲道進入右揚聲器的音量)和rl(控制左聲道進入右揚聲器的音量)。它
24、們的取值為100到100。 通過下面的公式可以計算左右音量的大?。鹤筝敵?左輸入*ll+右輸入*lr,右輸出=右輸入*rr+左輸入*rl。如果不指定這幾個屬性,系統(tǒng)默認為:ll=100,lr=0,rr=100,rl=0。 (6)sound.getVolume方法 格式:sound.getVolume(); 功能:返回一個0到100之間的整數(shù),0到100指定了當前聲音對象的音量,0是無音量,100是最高音量??梢詫ound.getVolume()的值賦給一個變量。它的默認值是100。 (7)mySound.loadSound方法 格式:mySound.loadSound(url, isStre
25、aming); 其中,urlMP3聲音文件在服務器上的位置。isStreaming一個布爾值,指示聲音是聲音流還是事件聲音。,6.4 “MP3播放器”動畫,功能:將MP3文件加載到Sound對象的實例??梢允褂胕sSteaming參數(shù)指示該聲音是一個事件聲音還是一個聲音流。 事件聲音在完全加載后才能播放。它們由動作腳本Sound對象進行管理,而且響應此對象的所有方法和屬性。聲音流在下載的同時播放。當接收的數(shù)據(jù)足以啟動解壓縮程序時,播放開始。與事件聲音一樣,聲音流僅存在于虛擬內(nèi)存中,不能將其下載到硬盤。例如:下面的實例加載事件聲音。 s.loadSound( http:/serverpath:p
26、ort/mp3filename, false); 例如,下面的示例加載聲音流。 loadSound( http:/serverpath:port/mp3filename, true); (8)mySound.setPan方法 格式:mySound.setPan(pan); 其中,參數(shù)pan一個整數(shù),它指定聲音的左右均衡。有效值的范圍為100到100,其中100表示僅使用左聲道,100表示僅使用右聲道,而0表示在兩個聲道間平均地均衡聲音。 功能:用來確定聲音在左右聲道(揚聲器)中是如何播放的。對于單聲道聲音,pan確定聲音通過哪個揚聲器(左或右)進行播放。例如:下面的實例創(chuàng)建Sound對象實例S
27、,并附加一個來自庫的標識符為L7的聲音。它還調(diào)用setVolume和setPan方法來控制L7聲音。,6.4 “MP3播放器”動畫,onClipEvent(mouseDown) S= new Sound(this); /創(chuàng)建一個聲音對象S S.attachSound(L7); S.setVolume(50); S.setPan(-100); S.start(30, 5); (9)mySound.setTransform方法 格式:mySound.setTransform(soundTransformObject); 其中,參數(shù)soundTransformObject一個用通用Object對象的
28、構(gòu)造函數(shù)創(chuàng)建的對象。 功能:用來設置聲音對象的屬性,其中sxform是一個使用對象創(chuàng)建的對象名稱。通過對象創(chuàng)建一個聲音對象模型,然后通過這個模型設置mySound對象的4個屬性。舉例如下。 mySound.attachSound(thisSong);/利用attachSound方法綁定一個聲音,綁定聲音的過程見attachSound方法介紹 myTransformObject=new Object();/構(gòu)造一個聲音變化對象myTransformObject,6.4 “MP3播放器”動畫,myTransformObject.ll=50; myTransformObject.lr=50; myTransformObject.rr=50; myTransformObject.rl=50; /將立體聲音的左右輸入平均分配給揚聲器,形成單聲道 mySound.setTransform(myTransformObject); /將聲音變化對象myTransformObject傳遞給setTransform方法 (10)setVolume方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職第二學年(護理)老年照護專項試題及答案
- 2025年大學本科(食品質(zhì)量與安全)食品分析試題及答案
- 2025年大學食品科學與工程(食品工程)試題及答案
- 2025年中職焊接技術(shù)與自動化(手工焊接)試題及答案
- 養(yǎng)老院老人心理咨詢師培訓制度
- 養(yǎng)老院心理慰藉制度
- 公共交通從業(yè)人員培訓考核制度
- 2026年人工智能計算機視覺基礎知識題庫含答案
- 2026年刮痧師中醫(yī)理論考核試題含答案
- 2026年中級公共文化服務面試題及答案
- 土壤微生物群落結(jié)構(gòu)優(yōu)化研究
- 2024外研版四年級英語上冊Unit 4知識清單
- 四川省南充市2024-2025學年部編版七年級上學期期末歷史試題
- 國有企業(yè)三位一體推進內(nèi)控風控合規(guī)建設的問題和分析
- 急診預檢分診課件教學
- 2025年高二數(shù)學建模試題及答案
- 儲能集裝箱知識培訓總結(jié)課件
- 幼兒園中班語言《雪房子》課件
- 房地產(chǎn)項目開發(fā)管理方案
- 堆垛車安全培訓課件
- 貝林妥單抗護理要點
評論
0/150
提交評論