所幸和辛承學長討論後終於解開啦!(天阿!書上說這是最基本的耶!)
趁我還沒有忘記,趕快把心得寫下來,不然改天又要煩惱(煙)
P.S.範例檔都是由Flash ActionScript 3.0 中參考的。
=======================================================================
package{
import flash.display.Sprite;
import flash.events.Event;
public class FirstAnimation extends Sprite {
private var ball:Sprite;
public function FirstAnimation() {
init();
}
private function init():void {
ball = new Sprite();
addChild(ball);
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0,0,40);
ball.graphics.endFill();
ball.x = 20;
ball.y = stage.stageHeight / 2;
ball.addEventListener(Event.ENTER_FRAME, OEF);
}
private function OEF(event:Event):void {
ball.x++;
}
}
}
====================================================================================
package:
指的是一個封裝的程式,就是不是寫在.fla檔中影格的.as檔,這個.as檔的程式要被使用的話需要和.fla放一起,而且更重要的是"需要在.fla中的舞台屬性中,文件類別設定相同的.as檔名",這樣才讀的到.as檔。
import:
匯入的意思,本程式是使用flash裡的"Sprite""Event"這兩個功能函數,所以需要先import指定它,在ActionScript 3.0如果有要用到功能函數都一定要先進行指定(所以這應該是一個全域函數吧。)
class :
我的理解是,指定此package的類別是甚麼,像此程式是指定 FirstAnimation,所以這個.as檔應該就要以 FirstAnimation來命名,當然.fla就要在舞台屬性中文件類別指定 FirstAnimation了(就是這一段讓我想了一整天...)
addEventListener:
是ActionScript 3.0中最主要也是最常用的偵聽(控制)函數,它是個全域函數,可以得知物件是否有事件產生,這個範
例"ball.addEventListener(Event.ENTER_FRAME, OEF)"指的是說:ball這個實體元件,會產生的事件(Event)是
ENTER_FRAME,而這個事件是因為有OEF這個家伙的關係,所以下一行的函數就會定義OEF的屬性使系統可以偵測到,進而引發ball開始ENTER_FRAME。
這整個函數就是一直重複"ball">>"執行function OEF(x軸加1)">>"OEF使得ball.ENTER_FRAME(更新螢幕)"的循環
所以就造成了球會移動了。
沒有留言:
張貼留言