Transcript 下載/瀏覽
第1章
Actionscript 3.0基本介紹
南台科技大學
多媒體與電腦娛樂科學系
什麼是Actionscript 3.0
(page-7)
AS於1996發表,那時候稱為Action
Flash 5和AS 1.0發表於2000年
Flash MX 2004和AS 2.0一同發表
逐漸支援物件導向
AS 3.0和Flex 2一同發表於2006年
AS 3.0讓Flash更適合於2D網路遊戲開發
產生一個簡單的AS程式
(page-9)
使用原始檔(A3GPU01_HelloWorld)
如何使用trace() - HelloWorld1.fla
trace("Hello World");
老師說明
使用trace也可以用於除錯
會輸出雙引號中間文字
把結果輸出在螢幕上 - HelloWorld2.fla
var myText:TextField = new TextField();
myText.text = "Hello World";
addChild(myText);
老師說明
AS 3.0對於變數或物件的型態比較嚴謹
例如用var宣告myText物件之後,要在後面以“:”指
定型態為TextField
myText物件內的屬性可以用“.”來指定,一個物件
裡面可以有很多屬性
之後會常常看到“addChild”這個語法,代表把某個
物件加入場景內,才有辦法顯示出來
我們的第一個AS 3.0類別 – HelloWorld3.fla
(HelloWorld3範例目前為空白的)
以上兩個範例都是把程式碼直接寫在時間軸上
面,這樣的做法非常不好,我們現在把
HelloWorld範例改為類別的寫法
新增一個(*.as)檔案命名為“HelloWorld3.as”,
注意名稱要與*.fla相同,鍵入以下語法
package
{
import flash.display.*; //引入基本函式庫(顯示用)
import flash.text.*; //引入基本函式庫(處理文字用)
// 宣告一個類別名稱為HelloWorld3,衍生自MovieClip影片片段
// 之後要產生一個對應的HelloWorld3.swf影片
public class HelloWorld3 extends MovieClip
{
// 宣告建構函式,名稱與類別名稱相同
// 建構函式在類別產生時會執行
public function HelloWorld3()
{
// 其餘的用法都相同
var myText:TextField = new TextField();
myText.text = “Hello World!”;
addChild(myText);
}
}
}
老師說明
要替HelloWorld3.fla設定類別名稱(屬性->類別,鍵入類別名稱HelloWorld)
AS遊戲程式撰寫的策略
(page-22)
儘可能使用一個類別就好,像HelloWorld3範例這
樣
當你不知道怎麼樣用程式寫出某些功能的時候,
把這些功能拆成更小的步驟,直到你知道怎麼寫
程式出來為止
其他寫程式的好習慣
養成寫註解的好習慣
變數和函式盡量用有意義的名稱命名
把重複的程式碼改寫成函式的用法
把程式碼拆解成小部份來測試
基本的AS概念
(page-26)
宣告與使用變數
2.0的寫法也可以用
var myValue = 3; // 宣告變數同時指定值
var myValue; // 先宣告還未指定數值
宣告變數未指定型態的話,預設為object型態,
可儲存任何型態的變數(不嚴謹的作法)
比較好的作法
// 宣告一個形態為int的變數,同時指定整數7
var myValue:int = 7;
// 宣告型態Number的變數,同時儲存小數7.8
var myValue:Number = 7.8;
針對數值類型的變數,可使用運算符號+,-,*,/
var myNumber:Number = 7.8+2;
var myOtherNumber:int = 5-6;
var myOtherNumber:Number = myNumber*3;
var myNextNumber:Number = myNumber/myOtherNumber;
累加++,累減--的用法
myNumber++; // 變數累加1
myNumber += 7; // 變數加上7
文字類型的變數用法
var myString:String = “Hello”;
var myOtherString = myString+”World”;
myString += “World”;
條件判斷式,只有一個條件
// 假如myValue的數值為1的話
if (myValue == 1)
{
// 執行下列函式來做某些事情
doSomething();
}
老師說明
特別注意“==”和“=”雖然只有差一個等號,用法完全不同
“==”用於判斷兩個數值或變數是否相同,通常會配合條件判斷式
“=”用於把某些值指定給變數或物件
更複雜一點的判斷式
if (myValue == 1) // 如果myValue的數值如果是1的話
{
doSomething(); // 作第一種事情
}
else if (myValue == 2) // 如果myValue的數值是2的話
{
doSomethingElse(); // 作第二種事情
}
else // 除了上面兩種條件之外的狀況
{
doNothing(); // 做另外一種事情
}
更複雜的條件判斷
判斷是否同時符合(且) – 使用“&&”
判斷是否符合其中一個條件(或) – 使用“||”
// myValue數值是1 “而且”myString是This
if ((myValue == 1) && (myString == “This”))
{
doSomething();
}
迴圈的用法主要用for和while
for迴圈執行固定次數
// 迴圈要配合迴圈參數
// 設定初始值為0
// 跑到小於10為止
// 迴圈參數每次累加1
for(var i:int=0;i<10;i++)
{
doSomething(); // 每次迴圈執行一次函式
}
while迴圈一直執行到符合某種條件為止
var i:int = 0;
while (i < 10) // 只要i小於10就一直執行下列事情
{
i++;
}
下面的用法也可以
var i:int = 0;
do
{
i++;
} while (i <10);
函式
宣告一個函式的時候,需要有“函式名稱”、“輸入值”、“回傳值”
private function myFunction(myNumber:Number,
myString:String): Boolean
{
if (myNumber == 7)
return true;
if (myString.length < 3)
return true;
return false;
}
老師說明
函式名稱:myFunction
兩個函式輸入值:myNumber、myString
函式回傳值:型態為Boolean
函式的回傳值只能有一個
函式輸入值可以不只一個,也可以沒有
除錯
(page-31)
設定停止點(breakpoint) – Ctrl + B
在除錯模式,會執行到停止點暫停
進入除錯模式 – Ctrl + Shift + Enter
繼續前往下一個停止點 – Alt + F5
進入函式 - Alt + F6
除錯時觀察變數內儲存的數值是否有正確