首先 say hello 一下,在輸出面闆 trace 出 “Hello World!”。複習一下AS2的類代碼:
class net.eidiot.learnAS3.HelloAs2{
public function HelloAs2(){
trace("Hello World!");
}
}
為了讓這段代碼工作,需要在Flash IDE裡場景的第一幀輸入代碼:
import net.eidiot.learnAS3.HelloAs2;
var hello:HelloAs2 = new HelloAs2();
再來看看AS3的類:
package net.eidiot.learnAS3
{
import flash.display.Sprite;
public class HelloAs3 extends Sprite
{
public function HelloAs3(){
trace("Hello World!");
}
}
}
打開Flash 9,在文檔屬性的“Document class”裡輸入包名和類名,如圖:
[img]/uploads/allimg/080401/1736360.gif[/img]
下面來看看差別。在AS3的類裡多了一個package關鍵字,後面跟上類的包名(如果fla和類放在相同的檔案夾就可以什麼都不跟)。這樣在聲明類的時候就不用帶上包名了。
public class HelloAs3 extends Sprite
class 關鍵字的前面多了一個 public 。在AS3裡類還可以是 internal 。如果聲明類為 internal 則隻有同一個包裡的其他類可以引用導入,包外的任何類都将通路不到它。此類繼承了 Sprite 。AS3的類如果想使用 MC 的事件或方法必須讓它繼承 MovieClip 或者 Sprite 。Sprite 可以了解為沒有時間軸的 MovieClip 。
最後一步是把它設定為 fla 的 Document class ,這樣類 HelloAs3 就和文檔 helloAs3.fla 綁定在一起了。關于 Document class 可以參考黑羽的文章:
[url=http://www.blueidea.com/tech/multimedia/2006/3709.asp]Document Class特色為我們帶來了什麼[/url]
。
是不是感覺AS3太麻煩了?高射炮打蚊子,是要費勁一點的。
[1b]源檔案:[/1b]
[url=http://www.blueidea.com/articleimg/2006/07/3854/hello.rar][1b]hello.rar[/1b][/url]
嘗試用AS3做一個簡單的計數器。先來看看最後的效果:
[url=http://www.blueidea.com/articleimg/2006/07/3854/timer.swf][1b]
[color="#444444"]執行個體效果[/color]
[/1b][/url]
(
[url=http://www.blueidea.com/articleimg/2006/07/3854/ShowTimer.swf]
[color="#444444"]檢視類代碼[/color]
[/url]
)
public function ShowTimer(){
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
initMc();
}
AS3裡新加了很多的常量來代替字元串。這給我們帶來了很大的友善。比如要限制影片的縮放模式為固定尺寸,AS2時的代碼為
Stage.scaleMode = "noScale";
值是一個字元串,在輸入的時候是沒有代碼提示的,很容易輸錯(我經常是到幫助文檔裡把字元串複制過來)。而在AS3裡的代碼為:
stage.scaleMode = StageScaleMode.NO_SCALE;
原來的字元串 “noScale” 由常量 StageScaleMode.NO_SCALE 代替。這樣可以使用代碼提示自動完成,有效避免了因為輸錯而造成的程式bug(而且很友善 )。同樣的字元串常量還有一些事件類型比如 MouseEvent.CLICK 代替”click” 等等。
private function initMc():void{
showTxt = new TextField();
addShow(showTxt,10,10,310,20);
addLabel(setDelayLabel,10,40,"delay:");
//...other code
}
添加文本框和按鈕。注意,需要再次引用的文本框必須顯式初始化,否則在其他地方引用此變量将傳回 null 。
private function addLabel(txt:TextField,x:uint,y:uint,text:String):void{
txt = new TextField();
txt.x = x;
txt.y = y;
txt.text = text;
addChild(txt);
}
AS3裡所有的東西都是 new 出來的。僅僅 new 出來還不行,必須使用 addChild() 把它添加到顯示清單裡。
private function addBtn(mc:Sprite,...,clickHanlder:Function):void{
mc.mouseChildren = false;
mc.graphics.beginFill(0x000000,0.3);
mc.graphics.drawRect(0,0,w,h);
本文轉自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/1737.html