亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

AS基礎(chǔ)教程整理第10/13頁

 更新時(shí)間:2007年03月22日 00:00:00   作者:  

第十一章 一點(diǎn)面向?qū)ο缶幊讨R(shí)

At is heart, OOP simply means that you treat portions of your program as self-contained, but interrelating modules called objects. 
這是什么呀?我不翻譯了,概念的我們就先不懂吧,對(duì)象主要構(gòu)成包括屬性(properties)和方法(methods)
一個(gè)對(duì)象通常都以現(xiàn)實(shí)世界里的某個(gè)東東做藍(lán)本
例如我們可以定義一個(gè)對(duì)象叫球
那么這個(gè)球?qū)?huì)有這樣的屬性:半徑、X坐標(biāo)、Y坐標(biāo)、顏色
同時(shí),也會(huì)用屬于球自己的方法例如:移動(dòng)球、計(jì)算球的面積

當(dāng)然,我們還可以定義一些相對(duì)抽象的對(duì)象,例如我們要做的多選題

所有的對(duì)象都屬于某類(class),類的意思其實(shí)是用于創(chuàng)建對(duì)象的模版

一個(gè)實(shí)例(instance)就是某一個(gè)類的特定某一個(gè)case(好復(fù)雜,概念性的東西我翻不過來啦,反正實(shí)例就類創(chuàng)建出來的某一個(gè)對(duì)象)

還是再舉例吧
*  例如我們有個(gè)一個(gè)叫Chair的類
*  這個(gè)類定義了一個(gè)東西需要它有四條腿,一個(gè)坐墊
*  然后我們就可以用Chair這個(gè)類來定義我們的不同對(duì)象(可理解為椅子的款式),每個(gè)對(duì)象就有它特有的高、寬、材料、重量、顏色,正是這些屬性使每個(gè)對(duì)象互相區(qū)別。

所有的椅子互相區(qū)別,有自己的屬性,但是他們又有同樣的結(jié)構(gòu):四條腿、一個(gè)坐墊

OK,那AS里面的類和對(duì)象呢?
是的,AS里我們可以自己創(chuàng)建對(duì)象,也有可以使用的內(nèi)建對(duì)象
內(nèi)建的類(你可以用它來創(chuàng)建對(duì)象)包括:Array, Boolean, Color, Date, MovieClip, Number, Object, Sound, String, XML, XMLSocket 
內(nèi)建的對(duì)象(已經(jīng)可以直接使用的對(duì)象)包括:Arguments, Key, Math, Mouse, Selection 
內(nèi)建的類、對(duì)象當(dāng)然都是在FLASH里面有自己功能的東西。而正是這些功能非常常用,F(xiàn)LASH才內(nèi)建了這些類和對(duì)象,例如:
Mouse.hide();          // Hide the mouse pointer 將鼠標(biāo)隱藏,你經(jīng)常用吧?現(xiàn)在才知道其實(shí)是內(nèi)建的Mouse對(duì)象的一個(gè)hide()方法吧?

在學(xué)習(xí)如何創(chuàng)建自己的類和對(duì)象之前,先來了解一下內(nèi)建類和對(duì)象是怎樣工作的吧

與數(shù)組的結(jié)構(gòu)類似,對(duì)象是容器們(containers)的容器(container)
一個(gè)對(duì)象,用各個(gè)獨(dú)立的屬性來存放數(shù)據(jù),只不過數(shù)組區(qū)分每個(gè)容器是用數(shù)字,而對(duì)象則是用屬性名,要調(diào)用一個(gè)數(shù)組里面某個(gè)數(shù)據(jù),我們需要它是索引值,而要調(diào)用對(duì)象的屬性,則要知道屬性名
看看以下這個(gè)例子,這是個(gè)叫BALL的對(duì)象“

BALL對(duì)象有兩個(gè)屬性:radius 和 color
而兩個(gè)屬性分別賦值為:50 和 0xFF0000 (這是AS里面表達(dá)16進(jìn)制的方法)

概念清楚了,說一AS里面使用對(duì)象要注意的地方
首先,對(duì)象的屬性很靈活,它儲(chǔ)存的數(shù)據(jù)可以是strings(字符串), numbers(數(shù)字), booleans(布爾值), null(空), undefined(未定義), functions(函數(shù)), arrays(數(shù)組), movie clips(電影夾子), or even other objects(甚至是其他的對(duì)象,包括自定義的). 
調(diào)用屬性,可用點(diǎn)語法:objectName.propertyName
例如我們賦值給BALL里面的屬性radius:
ball.radius = 100; 
我們也可以用符號(hào)[]來訪問屬性,但是[]里面的屬性名需用雙引號(hào)擴(kuò)住,同上例:
ball["radius"] = 100; (所以說數(shù)組也是對(duì)象一種,訪問方法也一樣,并沒有搞特殊化)
與點(diǎn)語法比較,[]更靈活,可以動(dòng)態(tài)地改變屬性的名字,里面可以是變量或表達(dá)式,例如:
var propName = "radius";
ball[propName] = 100; 
這點(diǎn)是點(diǎn)語法無法辦到的

純粹的OOP中,我們幾乎不會(huì)直接訪問對(duì)象的屬性
我們一般都使用方法(methods) ,來改變屬性
例如改變mySound這個(gè)聲音對(duì)象的音量屬性
AS的用法應(yīng)該是mySound.getVolume(100);
而不是mySound.volume=100;
但是為了簡(jiǎn)單,多選題這個(gè)例子里不一定遵循這個(gè)原則,事實(shí)上AS里面很多對(duì)象都不可以辦到這點(diǎn),所以有人說AS不是面向?qū)ο笳Z言。

關(guān)于對(duì)象的方法
方法method其實(shí)是一些附屬于對(duì)象的函數(shù),其作用主要是訪問對(duì)象中的數(shù)據(jù),或完成某種功能
所以調(diào)用方法和調(diào)用普通函數(shù)類似:objectName.methodName() 只是前面加上了對(duì)象的名字
例如上面的BALL對(duì)象,我們需要它的面積,使用 getArea 這個(gè)方法:
ball.getArea(); 

預(yù)習(xí)一下,在下一個(gè)例子中,雖然MOOCK不打算建立自己的方法,但是將使用內(nèi)建于MovieClip對(duì)象的兩個(gè)方法:
*MovieClip.attachMovie()
此方法是將Library(CTRL+L按出來的那個(gè))里面的symbol復(fù)制一個(gè)instance到場(chǎng)景中
(chocobo:給不懂概念的人緊急補(bǔ)習(xí),放在庫(Library)里面的叫符號(hào)(symbol),拉到場(chǎng)景中就叫實(shí)例(instance),一個(gè)符號(hào)可創(chuàng)建多個(gè)實(shí)例,符號(hào)改變則實(shí)例隨之改變)
與之類似的是MovieClip.duplicateMovieClip(),但是該方法需要事先在場(chǎng)景里已經(jīng)有一個(gè)實(shí)例

*MovieClip.removeMovieClip()
此方法與上面相反,是刪除場(chǎng)景里面的instance的

大家看到了,在下一例中,我們將使用MovieClip這個(gè)內(nèi)建對(duì)象,因?yàn)樗涂梢詽M足我們的需要,不必新類型的對(duì)象了
我們先來熟悉一下MC這種對(duì)象

它有很多屬性_height(高度)、 _alpha (透明度),MC的屬性大家可以在AS字典里面查到,在AS面板里這寫屬性也是變色顯示的
同時(shí)MC的方法,例如 MC.play(); 等也可以查到
當(dāng)我們?cè)贛C里面的時(shí)間線使用這些屬性、方法的時(shí)候,可以省略不寫前面部分,直接寫play(); 
MC可以互相嵌套,MC當(dāng)中又有MC,就出現(xiàn)類似: mc1.mc2.play(); 的情況
為了調(diào)用包含自己的上一級(jí)MC的方法、屬性,AS里面用_parent,例如:
在mc1包含mc2 ,在mc2中想使mc1播放:_parent.play(); 
還有另一個(gè)保留字:_root指代該電影的主時(shí)間線
例如想在某個(gè)mc里面讓整個(gè)電影播放:_root.play(); 
想在某個(gè)MC中讓另一mc1播放:_root.mc1.play();

還有,MC中定義的變量,將作為MC的一個(gè)屬性可被訪問
在mc1里面寫了一句 var a=1;
我們將可使用 mc1.var來調(diào)用它


關(guān)于類(class)
這個(gè)概念大家還是不大懂吧?類就是定義一個(gè)對(duì)象將擁有什么的方法跟屬性的東東,類似MC里instance與symbol的關(guān)系,instance的結(jié)構(gòu)就是由symbol決定的,每個(gè)instance又可以不一樣
AS里面沒有專門定義類的例如class這樣的關(guān)鍵字,我們使用函數(shù)來定義類,這種函數(shù)稱構(gòu)造函數(shù)constructor function,函數(shù)的作用就是產(chǎn)生我們定義好的類的實(shí)例(就是對(duì)象)
舉例最實(shí)在:
// make a Ball constructor 最簡(jiǎn)單的構(gòu)造函數(shù)
function Ball () {
  // do nothing 里面是空的

現(xiàn)在我們可以定義新類型Ball的對(duì)象了
myBall = new Ball(); 
語法就是前面是新對(duì)象實(shí)例名,等號(hào)后是new加構(gòu)造函數(shù)名
myBall就擁有了Ball定義的一切結(jié)構(gòu)了(雖然Ball里面是空的,嘻嘻)

不過不是所有對(duì)象創(chuàng)建都用new,例如mc創(chuàng)建就用的是attachMovie()或duplicateMovieClip()

好了,我們的構(gòu)造函數(shù)總不能空的,如何定義類,讓新對(duì)象有自己的屬性呢?
使用this這個(gè)關(guān)鍵字,看例子,新的構(gòu)造函數(shù):
function Ball () {
  this.radius = 10;
  this.color = 0xFF0000;
  this.xPosition = 35;
  this.yPosition = -4;

以后我們定義出來的新對(duì)象,都擁有半徑,顏色、XY坐標(biāo)屬性啦
慢著,怎么每個(gè)新對(duì)象都一模一樣???
再改,用函數(shù)的參數(shù)來定義動(dòng)態(tài)的屬性:
// Make the Ball constructor accept
// property values as arguments.
function Ball (radius, color, xPosition, yPosition) {
  this.radius = radius;
  this.color = color;
  this.xPosition = xPosition;
  this.yPosition = yPosition;

我們可以定義不同屬性的對(duì)象了
myBall = new Ball(6, 0x00FF00, 145, 200);

本教程關(guān)于還有創(chuàng)建方法以及如何在類之間繼承方法和屬性沒講,
無論如何,OOP都不可能在這么短時(shí)間之內(nèi)說清楚,
但這不妨礙我們做下一個(gè)例子了。

相關(guān)文章

最新評(píng)論