Flash MX 2004 ActionScript圖文教程(十二)

來源:互聯網
上載者:User
教程   2.4影片剪輯事件
  相對於前面所介紹的滑鼠事件、鍵盤事件以及幀事件而言,影片剪輯事件則顯得稍為有點難懂。當我們將一個影片剪輯放到情境中時,他就成了一個“事件發射器”,不斷地報告自己的運行狀態,如果我們捕獲這樣的事件,就可以做出相應的反應和處理。影片剪輯有多種,下面分門別類地加以介紹。

  2.4.1onClipEvent(Load)和onClipEvent(unload)
  這個事件在影片剪輯載入的時候發生,那什麼是影片剪輯的載入呢?比方說,你在情境中添加了一個影片剪輯clip_mc,並讓他在第10幀的時候出現影片中,那麼第10幀的時候它就會觸發這個事件。要想處理這個事件可以選擇影片剪輯clip_mc,然後在下面的指令碼面板中輸入這樣的代碼(通常用來對影片剪輯進行初始化):

  onClipEvent(Load)

  {

  }

  onClipEvent(unload)的作用和onClipEvent(load)的作用恰好相反,當影片剪輯消失的時候,這個事件就會發生。

  2.4.2OnClipEvent(enterFrame)
  enterFrame事件會隨著影片的播放而不斷髮生,影片每前進一幀,影片剪輯就會觸發一次enterFrame事件。假設影片的播放速率為每秒20幀,那麼這個事件就會以每秒20次的速率不斷產生。你一定會問,這樣的事件有什麼作用?其實在影片剪輯事件中,enterFrame應該說是最常用的,因為他可以用來製作相當複雜的動畫。比方說,我們要製作一個炸彈從空中不斷翻滾落下的動畫可以按照這樣的步驟來執行:首先建立一個影片剪輯作為炸彈,將其拖放到情境中建立影片剪輯執行個體,讓這個執行個體捕捉enterFrame事件,並為其設計這樣的代碼:

  onClipEvent(enterFrame)

  {

  this._Roation+=10;

  this._y+=10;

  }

  這段代碼的意思就是,每隔一幀將影片剪輯(this)旋轉10度,同時沿縱向移動10個單位。這裡用到了一個“+=”運算子,可能有點容易讓人感到困惑,其實這是一種常用的運算子簡寫方式,意思是“自己給自己加上某個值”,例如This._Rotation+=10和This._Rotation=This._Rotation+10是等效的。

  2.4.3onClipEvent(MounseMove)、onClipEvent (mouseDown)和onClipEvent (mouseUp)
  這個事件和前面見過的很多時間似乎有些相似,這幾個事件確實是當滑鼠移動的時候發生,但是要特別注意一點,不論滑鼠在情境的什麼位置(而不一定要在影片剪輯上方),這個事件都會發生。滑鼠每動一下,MouseMove事件都會發生一次。同樣,你又要問,這個事件能幹什麼了?舉例來說,我們需要製作一個類似泡泡龍那樣的遊戲,螢幕下方有一門大炮,當滑鼠移動的時候,炮口會始終指向滑鼠的方向。這種效果就可以onClipEvent(MouseMove)來實現。具體來說,就是將大炮製作成一個影片剪輯,然後為其添加這樣的代碼:

  onClipEvent(mouseMove)

  {

  var_angle=((this._x-_root._xmouse)/(this._y-_root._ymouse));

  trace(var_angle);

  var_angle=Math.atan(var_angle);

  var_angle=var_angle*180/Math.PI;

  this._Rotation=-var_angle;

  }

  這段代碼用到了幾個Flash提供的數學函數,它們都是在Math對象內部的,因此用起來很方面。首先,用當前影片剪輯的橫向和縱向座標減去滑鼠的橫向和縱向座標,然後計算及其夾角的正弦值,接著將這個值用反正切函數換算成角度(Math.atan),注意,結果是弧度數,需要再轉換成常用的角度,最後在將其複製給影片剪輯的_Rotation參數,實現大炮隨著滑鼠指標的運動而旋轉的效果。

  搞懂了mouseMove事件,MouseDown和MouseUp的含義也就不難理解了。

  2.4.4OnClipEvent(keyDown)和onClipEvent(KeyUp)
  這兩個事件和前面的on(Keypress)相似,都是用來捕獲鍵盤的按鍵事件的。不過,需要特彆強調的是,OnClipEvent(KeyDown)和onClipEvent(KeyUp)這兩個事件的功能要強大得多,將它們結合起來使用可以捕捉使用者按下的按鍵組合(比如CTRL+A),這比只能夠捕捉單個按鍵動作的on(Keypress)要強大得多。比方說,如果我們需要捕捉使用者按下CTRL+F的操作可以使用這樣的代碼:

  onClipEvent(keyUp)

  {

  if (Key.isDown(Key.CONTROL) && Key.isDown(70))

  {

  //執行相應的操作

  }

  }

  這段代碼中使用了內建對象Key,這個對象對於按鍵的處理非常有用。IsDown()方法用來監測某個鍵是否已經按下,這個函數的參數可以是索引值比如70對應F鍵。也可以使用Key對象內建的鍵名稱,比如Key.CONTROL就是指CTRL鍵。將這兩個鍵是否按下的結果進行邏輯與運算(&&)就可以知道CTRL和F鍵是否同步選取。

  2.4.5OnClipEvent(data)
  如果某個影片剪輯執行個體進行了資料載入的操作,那麼OnClipeEvent(data)事件會在資料載入完成的時候發生。比方說,我們在某個按鈕的on(press)事件處理中加入了代碼執行變數載入操作,並將代碼載入函數loadVariables()的目標參數設定為某個影片剪輯。然後再為這個影片剪輯添加OnClipEvent(data)事件,當參數載入完畢之後,影片剪輯就會收到一個OnClipEvent(data)事件。

  前面介紹了很多事件,但事實上Action Script提供的事件還有很多。除了鍵盤事件、滑鼠事件等等這些非常直觀的事件之外,還有一些比較“抽象”的事件。比方說,一段聲音播放完成之後會產生一個事件,當使用者調整播放器的視窗大小時也會產生一個事件。捕獲並處理這些事件可以進一步提升Flash影片的互動效能。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。