ActionScript 3.0系列教程(1):與Flash9先來一次親密接觸!

(如蒙轉載,請留下個人Blog連接:www.kingda.org, thx)api

Flash Professional 9 ActionScript 3.0 Preview 版本今天發佈了,意味着今後咱們今後不只僅只能使用Flex 2來使用AS3.0,更可使用咱們一直很熟悉的Flash IDE來進行AS3.0開發了。架構

與Flex 2不一樣,Flash 9 alpha(即上面的Flash Professional 9 ActionScript 3.0 Preview )容許咱們建立基於時間軸的ActionScript 3.0的Fla文檔,而不是基於State的MXML文檔。 在Flash 9 alpha 裏,咱們和之前同樣能夠在舞臺上直接手繪矢量圖,建立元件,添加動畫,等等。測試

我黑羽是急性子,先跳開一些特點的介紹,單刀直入,立刻來個實例。邊講解邊說說Flash 9的特色。
1.gif
點擊看大圖,清楚點。動畫

爲了照顧新手xdjm們,看圖說話一把。老鳥略過勿看,免得嫌我羅嗦。呵呵。
新建一個fla,隨便畫一個方塊什麼的,雙擊選中按F8轉換成MovieClip。在屬性面板中命名爲kingda_mc。和之前如出一轍。
再新建一層,命名爲actions,這是個好習慣,要保持。選中第一幀,按F9打開動做面板,寫入以下代碼。
Control+Enter,在測試窗口中,雙擊那個方塊,就會有trace信息顯示出來。this


//【黑羽】ActionScript 3.0系列教程(1)
//http://www.kingda.org
kingda_mc.doubleClickEnabled = true;
kingda_mc.addEventListener(MouseEvent.DOUBLE_CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
trace("哈哈,你雙擊我了");
}
//直接支持雙擊了, 兄弟們,爽不爽 ^_^
稍做解釋,這兒有幾個和AS2.0不一樣的地方了。

1. AS2.0中,MovieClip是不能夠加偵聽器地,但AS3.0中,卻能夠了。講點深刻的東東給老鳥聽,全部AS3.0中能被咱們看見的對象,其祖宗都是DisplayObject類。標準說法是都間接或直接的繼承於DisplayObject類。而這個DisplayObject又是EventDispatcher的兒子。因此,咱們就有了這個推論:
AS3.0中全部能被咱們看到的東西,都能發送事件和加偵聽器。 徹底適用於Event Model.
爽吧, 我是爽歪了。AS2.0中爲了解決這個麻煩我還本身編了一個代理髮送事件類EventSender。省了很多事兒,而如今連這個也不用了,霍哈哈。spa

2.AS3.0中要讓MovieClip在接受click事件,rollover事件可以像Button同樣,鼠標放上去顯示手型,那麼必定要加上一句:
kingda_mc.buttonMode = true;
小事一樁,一筆帶過。設計

3.AS3.0中的事件模型和AS2.0大不同了。
簡而言之,就是「規範」。再也不直接使用字符串來定義事件名稱了。又要講深一點了,都是使用了新的const型變量來定義事件字符串名稱,一旦定義,不能再更改。


public static const MOVE:String = "move";代理

極大的避免了咱們由於手誤,打錯字符串,而花上一個下午找bug。使用了這種模式,咱們一旦打錯,編譯器馬上會發現並告訴咱們。多好。
給出一些鼠標事件列表,你們能夠替換上面源碼中的事件類型,本身試着玩兒。
如,你能夠換成MouseEvent.MOUSE_OVER就變成了之前的onRollOver效果。對象


CLICK : String = "click"
[static] Dispatched when a user presses and releases the main button of the user's pointing device over the same InteractiveObject. MouseEvent
DOUBLE_CLICK : String = "doubleClick"
[static] Dispatched when a user presses and releases the main button of a pointing device twice in rapid succession over the same InteractiveObject when that object's doubleClickEnabled flag is set to true. MouseEvent
MOUSE_DOWN : String = "mouseDown"
[static] Dispatched when a user presses the pointing device button over an InteractiveObject instance in the Flash Player window. MouseEvent
MOUSE_LEAVE : String = "mouseLeave"
[static] Dispatched by the Stage object when the mouse pointer moves out of the Flash Player window area. Event
MOUSE_MOVE : String = "mouseMove"
[static] Dispatched when a user moves the pointing device while it is over an InteractiveObject. MouseEvent
MOUSE_OUT : String = "mouseOut"
[static] Dispatched when the user moves a pointing device away from an InteractiveObject instance. MouseEvent
MOUSE_OVER : String = "mouseOver"
[static] Dispatched when the user moves a pointing device over an InteractiveObject instance in the Flash Player window. MouseEvent
MOUSE_UP : String = "mouseUp"
[static] Dispatched when a user releases the pointing device button over an InteractiveObject instance in the Flash Player window. MouseEvent
MOUSE_WHEEL : String = "mouseWheel"
//支持鼠標滾輪嘍,霍霍。
指出一點,在我給出的例子中,使用了雙擊這個事件。這個有點特殊,在使用雙擊事件以前,要加上一句:
kingda_mc.doubleClickEnabled = true;由於MovieClip對於雙擊事件默認是false,關閉的。


4.偵聽器的不一樣。
在AS2.0中咱們一般要新建一個對象作偵聽器。也能夠像個人例子中用function作偵聽器。可是,很惋惜,因爲AS2.0的設計缺陷,使得function中的this指向經常給咱們帶來困擾。因而有了Delegate類來解決。
而現在,AS3.0中採用了優秀的Traits Object架構(唔,這個,就暫不解釋了),使得它能記住this的指向。因此,兄弟們,放心大膽使用Function做爲偵聽器使用吧。blog

今天就寫這麼多了,主要是Flash 9出來,我老人家激動了一下,一會兒寫了這麼多東東。但願對你們有所幫助,但願你們狂頂支持一把,否則沒動力,本系列教程會變成太監貼!霍哈哈! ^_^ 快回帖支持!

本篇主要涉及了一下AS3.0中的事件模型部分,這是很重要的。之後會有更深刻的教程來詳細介紹。本篇的目的就是讓你們使用一下Flash 9和AS3,消除陌生感。寫的淺了,還請包涵。
下一篇介紹很是實用的東東,類和MovieClip的綁定,和Flash 9中一大特點:Document Class。用來替代在時間軸寫代碼的好東東。tongue.giftongue.giftongue.gif

P.S:本教程受Creative Commons License.協議保護,未經做者贊成,不得用於商業用途。

相關文章
相關標籤/搜索