(一)--變數 看了幾天的官方語言指南,對ActionScript3.0(以下簡稱as3.0)的變數有了一些瞭解,和大夥分享一下。
as3.0對變數的聲明有了要求,要指明變數的類型(這也是寫程式應該遵守的法則),具體看下面的例子:
1.聲明方式
(1)actionscript
i; //這樣聲明方式是錯誤的
var i; //這樣的聲明方式在as3.0中也是不推薦使用的
(2)actionscript3.0
var i:String; //聲明
i="helloWorld!"; //賦初始值
2.聲明並賦初始值
var i:String="helloworld";
3.多個變數聲明
var i:int,a:String,b:Number;
4.多個變數聲明並賦初始值
var i:int=2,a:String="nihao",b:Number=4;
這回關於變數的範圍沒有變化
1.全域變數的聲明
var str:String="World";
function fun(){
trace(str); //輸出: World
}
fun()
trace(str) //輸出: World
2.局部變數的聲明
function fun(){
var str:String="World";
trace(str); //輸出: World
}
trace(str) // 錯誤:str不能確定範圍
3.全域變數和局部變數相互關係
var str1:String="World";
function fun(){
var str1:String="local";
trace(str1); //輸出: local
}
trace(str1) //輸出: World
關於變數的資料類型和預設值,看下面
| 資料類型 |
預設值 |
| Boolean |
false |
| int |
0 |
| Number |
NaN |
| Object |
null
|
| String |
null |
| uint |
0 |
| 無宣告類型 |
undefined |
| 所有的其他類(包括使用者自己的類) |
undefined |
以上是小弟的淺見,有什麼不好的地方多指教,關於變數的使用先說到這,如果大家有關於as3.0方面不同意見,請大家留言,一起學習進步。最後,祝大家在程式享受快樂。
(二)--包
包(Package)是ActionScript3.0(以下簡稱as3.0)中新概念,在以前的as版本中,也有方法使用"包"的方法,請看下面的例子:
class com.ly.TestClass{
public var string:String;
public function fun(){
}
代碼....
}
這樣的方法在以前是經常用到的,寫過類的朋友應該深有體會。在類名前面寫上類的路徑,然後放在類路徑裡,最後在flash中調用。as3.0更改了以前的類路徑用法,增添關鍵字Package,如果大家熟悉java的話,應該很對這個關鍵字的使用方法有所體會,在flash中使用方法和java大致相同,請看下面的例子:
Package com{
public class TestClass{
public var string:String;
public function fun(){
}
}
包內可以建立多個類,請看下面的例子:
Package com{
class classTestClass{}
class classTestClass1{}
class classTestClass2{}
}
匯入類包的方法是使用關鍵字Import,請看下面的例子:
1.建立類包
//建立類包
Package com{
public class classTest{
}
class classBox{}
}
2.匯入類包
Import com.*;
var mytest:classTest=new classTest(); //正確: classTest是 public
var mybox:classBox=new classBox(); //錯誤:classBox是
private*
*NOTE:包的內部預設類型private
(三)--namespace(名稱空間) nampspace (名稱空間)是ActionScript3.0(以下簡稱as3.0)新的關鍵字,在一些先前的介紹中,說他很想C#中的名稱空間,其實它和C#的使用方法有很大的不同。如果,非要說它和某個語言中方法相似的話,應該是xml。xml有名稱空間聲明和使用,想瞭解xml名稱空間的使用可以在網上找些相關的資料,參考一下。
1.聲明並使用名稱空間的方法,請看下面的例子:
(1)申請名稱空間
namesspace testname;
(2)用你所申請的名稱空間來定義要被使用的方法和屬性
testname function fun(){
}
(3)使用名稱空間,有兩種方法:
use namespace testname;
fun();
/*--第二種--*/
testname::fun();
通過以上的例子,可以申請並使用自己的名稱空間。
以上是關於namespace基本用法,名稱空間還有其他的用法,我會繼續更新的。 (四)--迴圈 ActionScript3.0中新添加了一個for each...in語句,迴圈中其他的變化基本上沒有,雖然沒有什麼變化,還是將他寫出來,以便初學as的朋友有所借鑒。
言歸正傳,下面開始介紹迴圈的變化:
(1)for語句
它的用法和以前沒有變化
var i=0;
for(i=0;i<5;i++){
trace(i); //迴圈輸出i值
}
(2) while語句
它的用法也無變化, 只是要甚用,易出現死迴圈
var i=0;
while(i<5){
trace(i) //迴圈輸出i值;
i++;
}
(3) do..while語句
它的用法也無變化,迴圈一次,在進行判斷
var i=5;
do{
trace(i) //迴圈輸出i=5值;
i++;
} while(i<5);
(4) for...in語句
迴圈輸出對象中的屬性值( 不包括方法),數組中的元素。
對象迴圈
var object:Object={x:20;y:30};
for(var i:String in object){
trace(i+":"+object[i])
}
//輸出
//x:20
//x:30
數組迴圈
var array:Array=["one","two","three"];
for(var i:String in array){
trace(array[i])
}
//輸出
//one
//two
//three
(5) for each...in語句
as3.0中新添加的語句,和for..in有些相同,不同的是for each...in的變數包含值並通過屬性替換屬性名稱
var object:Object={x:20,y:30}
for each(var i in object){
trace(i)
}
//輸出
//20
//30
你也能構重複迴圈XML或者XMLLIST對象,請看下面的例子
var myxml:XML=<users>
<fname>Jackal</fname>
<fname>krean</fname>
<fname>playboy</fname>
</users>;
for each(var item in myxml.users){
trace(item)
}
//輸出
//Jackal
//krean
//playboy
它也允許你迴圈數組中的元素,請看下面的例子
var array:Array=["one","two","three"];
for each(var i in array){
trace(i);
}
//輸出
//one
//two
//three
以上關於迴圈在ActionScript3.0中的變化,還有添加語句,如果有需要開進的請大家不要吝惜打字,多提意見。
(五)--資料類型檢查 (一)資料類型
一個資料類型聲明是有初始值的,例如,Boolean有兩個初始值:true和false。as3.0中比較常用的資料類型,有String,Number和Array。你也可以通過使用自己寫的類和介面聲明所需要的資料類型。
在actionscript3.0中,初始化值和對象聲明值,FlashPlay都認為他們同屬一個類型
,請看下面的例子:
var otherInt:int=3;
var otherInt:int=new int(3);
注釋:關於初始化值和對象聲明值在flashplay是否相同有待研究
1.程式設計類型檢查
在程式編寫中,要明確傳遞變數值的類型和接受參數類型相同,請看下面的例子,參數
mystring的類型必須要和傳進來相同:
function fun(mystring:String){
trace(mystring)
}
var string:String="hello";
fun(string)
在strict 模式中,ActionScript編譯報告類型錯位並編譯異常。請看下面的例子,在下面的代碼中在函數中聲明一個物件類型的參數,但是後來又將這個參數付給了字串和數字型,在安全模式中將產生一個編譯錯誤:
fucntion DynamicTest(varx: Object ){
if(varx is String ){
var string: String =varx; // 在安全模式中將產生一個編譯錯誤
trace("String"+string);
}else if(varx is Number){
var number: Number =varx; // 在安全模式中將產生一個編譯錯誤
trace("Nubmer"+number);
}
}
當然,在安全模式中不可以,你也能夠使用其他的方法。在函數參數聲明中可以讓參數適應所有的資料類型,請看下面的例子:
fucntion fun(varx){
if(varx is String ){
var string: String =varx;
trace("String"+string);
}else if(varx is Number){
var number: Number =varx;
trace("Nubmer"+number);
}
}
fun(100);
fun("hello");
2.已耗用時間檢查
在普通模式中,FlashPlayer同樣也有嚴格要求,請看下面的例子,在函數fun中參數接受了一個值3,因為參數的型別宣告是一個(Array),即使運行在普通模式中也會報錯:
function fun(mycan: Array ){
trace(mycan)
}
var myNum:Number=3;
fun(myNum) / /在普通模式中將產生一個編譯錯誤
如果將myNum不限制類型,在普通模式中也會報錯的,請看下面的例子:
function fun(mycan:Array){
trace(mycan)
}
var myNum=3;
fun(myNum) / /在普通模式中將產生一個編譯錯誤
(二)1. is操作符
is操作符在actionscript3.0中是新添加的,用來測試對象是不是和這個類或介面有繼承關係,請看下面的例子:
var mySprite:Sprite=new Sprite();