ActionScript3.0基礎(chǔ)教程
要使用ActionScript3.0,就要好好學(xué)習(xí)它的基礎(chǔ)教程。下面是陽光網(wǎng)小編給大家整理的ActionScript3.0基礎(chǔ)教程,供大家參閱!
ActionScript3.0基礎(chǔ)教程:使用函數(shù)和方法
as中的函數(shù)和方法在極大程度上是相同。都是只有在調(diào)用它們的時候才會執(zhí)行其包含的功能。與變量一樣,函數(shù)也只需寫(或聲明)一次,之后可以多次調(diào)用(或重用)。
3.1 方法與函數(shù)
函數(shù)的概念:執(zhí)行特定任務(wù)并可以在程序中重用的代碼塊。
方法與函數(shù)的區(qū)別是方法與一個特定的類關(guān)聯(lián)(類的對象可以執(zhí)行的任務(wù)),函數(shù)是用戶定義在時間軸上的代碼塊,或自定義類的一部分的(也變成了那個自定義類的方法)。
3.1.1 方法
方法是寫在類中的函數(shù)。當(dāng)對象需要去執(zhí)行計算,改變一個屬性,返回一個值,或執(zhí)行任何事先預(yù)定的動作時,它們就準(zhǔn)備好被調(diào)回了。
方法繼承
類的方法可以從其他類繼承,在類之間創(chuàng)建了邏輯鏈,從而最小化了功能的重復(fù)。同時削減了文件大小和重復(fù)的功能也是提高效率的體現(xiàn)。
每個外部as文件都定義了一個類所消耗的文件大小和CPU資源。
3.1.2 函數(shù)
函數(shù)是用戶為了把一個應(yīng)用程序的所有功能“縫合”在一起,而定義的代碼容器。
面向?qū)ο缶幊绦枰褂煤芏嗍孪榷x好的只維護自身的對象。你需要做的就是在你需要的時候給他們傳遞指令使他們執(zhí)行某些任務(wù)。換句話說,函數(shù)就是為解決某些需要而封裝的指令集。
3.1.3 定義函數(shù)
1.function functionName(參數(shù)1,參數(shù)2,…){
//函數(shù)執(zhí)行的動作
}
2.var 函數(shù)名:Function=function(參數(shù)1,參數(shù)2,…){
//執(zhí)行語句塊
}
函數(shù)的命名規(guī)則與變量的命名規(guī)則是一樣的。
3.1.4 使用函數(shù)的參數(shù)
方法或函數(shù)調(diào)用時他們都可以接受傳遞進來的參數(shù)值。
3.2 從函數(shù)中返回值
函數(shù)既可以接受參數(shù)值,也可以給予反饋。函數(shù)的一個實際好處是可以重用一般功能的代碼。
設(shè)置函數(shù)的返回值
創(chuàng)建的函數(shù)有返回值是,as允許嚴(yán)格的函數(shù)返回值類型。
不給返回類型函數(shù)返回任何值,只要將void作為函數(shù)的返回類型。
好的習(xí)慣是給你的函數(shù)一個返回類型,無論他們是否真的返回值。
Exam:
var js:number;
function init(cs:Number){return cs=1;}
trace(init(js));//1
嵌套函數(shù):function dj():String{
function dy():String{return "Hello"}
return dy()
}
3.3 函數(shù)作用域
作用域在as中表示變量或?qū)ο蟮奈恢煤退嘘P(guān)系。變量或?qū)ο笤谀膭?chuàng)建就可以在哪訪問,這就是它的作用域或位置。在代碼主要部分聲明的變量(時間軸上),就是時間軸變量,作用域在時間軸代碼上。本地變量是指在函數(shù)中創(chuàng)建的變量,它的作用域只在他的函數(shù)里。
對于函數(shù)來說,無論函數(shù)里發(fā)生什么,就讓它留在函數(shù)里吧。
在as中要時常注意在哪放東西。在代碼中編譯錯誤和功能沒有執(zhí)行作用域問題可能是最大的'原因。
想訪問和修改全局作用域中變量的值,只要在函數(shù)中調(diào)用它,并給他賦予一個新值就可以了。前提是函數(shù)中沒有一個和他同名的變量。
var sum:Number=50;
function addNumber(pNum1:Number,pNum2:Number):void{
sum=pNum1+pNum2;
}
addNumber(10,10);
ActionScript3.0基礎(chǔ)教程:使用類和對象
在as中任何東西都是對象
4.1 定義類和對象
類相當(dāng)于對象的藍圖。定義了該對象的所有內(nèi)容:看似如何,行為如何,做什么,處理什么數(shù)據(jù)以及如何創(chuàng)建。
對象是類的實例,或者是對象藍圖的副本。在類的對象被實例化后,就可以按照你的意愿訪問它的公用屬性,事件和方法來操作對象了。
類的層次涉及對類的劃分。類其實是一些定義對象外部的as文件。
導(dǎo)入一個具體的類,必須知道他在目錄或者說類包的路徑。
如import flash.display.MovieClip;
類的繼承 一般情況下,包中深層的子類繼承父類的核心功能。
4.2 導(dǎo)入類
在構(gòu)造對象之前必須導(dǎo)入類。在將類導(dǎo)入到代碼之后,就可以直接使用類名了。如果沒有導(dǎo)入,引用類必須使用包含路徑的完整類名。
var mc:MovieClip=new flash.display.MovieClip();
PS:所有基于時間軸編寫的代碼可以不用導(dǎo)入類(Flash會自動完成)
4.3 實例化對象
實例化一個對象是指用as構(gòu)造一個類的實例作為對象。不管對象是用來顯示還是管理數(shù)據(jù),實例化的方式總是一樣的:var objectName:ClassType=new ClassType();
4.3.1 對象方法
方法是定義在類中的函數(shù)。類的方法就是對象執(zhí)行的行為。可以傳遞參數(shù)、返回值。方法需要在類的對象實例化后調(diào)用。
4.3.2 對象屬性
屬性是實例的變量。他們保存了對象物理上、邏輯上的特性,比如位置(x、y)、尺寸(width、height、scaleX,scaleY)以及幕后使用到的各種值。
4.3.3 對象實例的數(shù)據(jù)類型
與變量一樣,對象實例的變量也有數(shù)據(jù)類型。若實例化錯對象類型,也將會導(dǎo)致編譯錯誤。
定義的對象實例數(shù)據(jù)類型總是要和類名一致。
4.4 使用外部代碼
使用外部文件,然后將其加入或者導(dǎo)入到應(yīng)用程序中,有很多好處。
可以在flash和編輯器(使用一個獨立的as編輯器)之間做一些分離,所有的代碼能同時顯示在不同的地方。
當(dāng)多位開發(fā)者面對同一個程序的不同之處時是一個不錯的選擇。
體會基于類編程的第一步
很多開發(fā)者不喜歡flash中的as面板,更喜歡第三方as編輯器。
第三方as編輯器:FlashDevelop(www.flashdevelop.org)
primalscript(www.primalscript.com):多語言編輯器
TextMate(www.macromates.com),只能用于蘋果機
Eclipse 一個開源的開發(fā)平臺
工作于外部的as文件時,你寫的代碼和在flash中基于幀的完全一樣。唯一的不同就是as是在一個外部的.as文件中。在flash文件被編譯時,外部的.as文件被加入到flash中。加入一個外部的.as
文件到flash應(yīng)用程序中和創(chuàng)建一個外部類不是一回事。
添加外部的.as文件,使用include
ActionScript3.0基礎(chǔ)教程:顯示列表和對象
flash平臺應(yīng)用程序主要用于顯示圖形和信息。as的底層處理了如何存儲圖形信息以及如何顯示他們。as3.0是flash顯示可視對象的方式。可視對象或顯示對象通過顯示列表添加到舞臺上(可視的)。顯示列表管理著顯示對象的層級,并且顯示對象本身也是可見元素。這種方法在編程中稱為顯示編程。
5.1 顯示列表
DisplayList像一個樹形結(jié)構(gòu)將顯示對象放置在舞臺上。也可以用as在運行時將對象添加到顯示列表中。在創(chuàng)建第一個程序時,stage就是主容器,在主容器中的所有顯示對象都會被顯示。隨后,任何在該舞臺上的顯示對象都有能力作為容器讓其他對象有他們自己的顯示列表,來管理他們的子顯示對象。
顯示對象在顯示列表中的位置決定了他們的位置。顯示對象是基于一個以添加順序為層級的堆順序,堆順序或顯示對象的深度定義了他們應(yīng)該出現(xiàn)在上邊還是當(dāng)重疊時顯示在另一個可視對象的下邊。
5.2 顯示類和對象
可以使用as在運行時創(chuàng)建顯示對象,或者在創(chuàng)作時添加到舞臺上。無論哪種方法,他們都是派生于DisplayObject,InteractiveObject或DisplayObjectContainer類。
5.2.1 顯示對象
DisplayObject類被用來定義只做顯示目的的顯示對象(沒有交互和時間軸)。DisplayObject類定義了所有其他顯示對象的核心功能。這個類也可稱為父類。編程術(shù)語中父類的意思是有其他類是派生于這個類的。
DisplayObject類的屬性,事件和方法
屬性 x y widht height scaleX scaleY alpha filters mask
方法 hitTestObject() globalToLocal() getBounds() getRect()
事件 addedToStage enterFrame removedFromStage
所有可視對象的核心都是DisplayObject。DisplayObject類可以看做顯示對象演變鏈上的第一"dna紐帶"。
所有DisplayObject類的子類繼承了DisplayObject類中定義的功能。繼承類的意思是出于某些目的使用父類作為基礎(chǔ)并自定義類添加其他功能。
DisplayObject類的子類
Bitmap 處理外部加載或由as創(chuàng)建的位圖圖像
Shape 創(chuàng)建矢量圖像,以及使用數(shù)學(xué)函數(shù)和as的復(fù)雜形狀
InteractiveObject 為對象定義交互的功能
Video 用于顯示視頻文件
StaticText 只可以用于處理在創(chuàng)建時使用文本工具創(chuàng)建的文本。不可以使用as創(chuàng)建和操作。但還是有類驅(qū)動的
MorphShape 只可以在運行時創(chuàng)建形狀時創(chuàng)建過渡
5.2.2 交互對象
InteractiveObject類繼承了DisplayObject父類
InteractiveObject類是所有可以用戶交互的核心類,包括鍵盤輸入和鼠標(biāo)交互。
InteractiveObject類的屬性,事件和方法
屬性 contextMenu mouseEnabled doubleClickEnabled
方法 Interactive()
事件 click keyDown keyup mouseDown mouseOver mouseOut mouseUp mouseWheel rollOver
InteractiveObject的子類
DisplayObjectContainer 定義一個擁有用于嵌套對象的顯示列表對象。
SimpleButton 程序中所有按鈕的實例
TextField 使用as控制和操作的輸出和輸入文本
PS:讓鏈接標(biāo)識符和庫元件同名是個很好的習(xí)慣。這樣可以在庫中很容易找到對象,當(dāng)使用as控制它的時候只要看庫中現(xiàn)實的名字就可以了。
在將對象添加到顯示列表前設(shè)置對象的屬性是一個很好的習(xí)慣。這樣可以確保對象在應(yīng)用程序中顯示之前已經(jīng)做好準(zhǔn)備了。
5.2.3 顯示對象容器
DisplayObjectContainer類繼承了InteractiveObject類和它的DisplayOBjectL父類
DisplayObjectContainer類定義了作為其他對象容器的對象。這些對象構(gòu)成了容器,將所有對象包含在他們自己的顯示列表層級中。
DisplayObjectContainer類的屬性、方法和事件
屬性 mouseChildren numChildren tabChildren textSnapshot
方法 addChild() getChildAt() removeChild() swapChildren()
事件 added addedToStage enterFrame removed removedFromStage render
DisplayObjectContainer類的子類
Loader 加載外部SWF和圖像(JPG,PNG,GIF)
Sprite 將圖形作為子對象包含
Stage 用于顯示對象的整個畫布
5.2.4 MovieClip類
MovieClip類繼承Sprite和DisplayObjectContainer類
MovieClip類和Sprite類相同,只是MovieClip類多了一個可以做逐幀效果或功能的時間軸(或播放頭)
所有DisplayObjectContainer類的子類都想舞臺一樣有他們自己的顯示列表。
【ActionScript3.0基礎(chǔ)教程】相關(guān)文章: