FlashAS執行個體學習:onEnterFrame事件與摧毀此事件

來源:互聯網
上載者:User

  onEnterFrame?是一個以影片剪輯幀頻不斷觸發的動作,利用它可以不斷地執行{}中的命令,但是執行完畢後,應當將此事件摧毀,以釋放指令碼所用的記憶體。

  摧毀此事件的文法是delete
  我們來複製50個蟲子,當複製完畢後,摧毀此 onEnterFrame事件。請按照下列步驟操作:
  1、放一個蟲子在舞台上,執行個體名為bug,
  2、選中第一楨,開啟動作面板,輸入:

var max:Number = 50;
var i:Number = 0;
onEnterFrame = function () {
duplicateMovieClip("bug", "bug"+i, i);
// 複製bug,bug的新ID分別是bug0 bug1 bug2...
this["bug"+i]._x = random(400);
// 新的bug的座標分別是400內任意的數
this["bug"+i]._y = random(400);
this["bug"+i]._rotation = random(180);
// 新的bug的旋轉是180內任意的數,便於讓蟲子的頭朝向各個方向
i++;
// 由於bug新的ID不能相同,故需要i++
if (i>=50) {
// 如果複製的數量大於等於50
delete this.onEnterFrame;
// 刪除此事件
}
trace(i);
// 跟蹤i,並且測試在沒有delete的情況下i的情況
};

點擊這裡下載源檔案

  點評:

  1、在使用onEnterFrame的時候,一定要考慮到delete this.onEnterFrame,如果在同一個SWF文檔中有比較多的onEnterFram的時候,會明顯的感覺到電腦的負荷比較重的。

  2、[]符號本身是數組操作符(關於數組,後面有比較詳細的教程),使用數組操作符,可以對當前對象進行引用,在這裡就相當於bug0、bug、1bug2....bug50共51個影片剪輯名稱的濃縮寫法。

  3、random()是內建類之核心對象中的數學類對象中的一個函數,例: random(4)可能得到 0,1,2,3中的任何一個.

  4、要多看協助說明,即使看不懂,也要堅持,否則提高AS寫作水平就比較難。

  5、利用onEnterFrame原則上是按照楨頻率的速度讀取的,即:如果楨頻率為12楨/秒,那麼每讀取一次需要的時間是1/12秒,這隻是原則上是這樣的,但當AS指令碼很多的時候,往往讀取的速度要下降,因此此事件沒有利用setInterval間隔時間調用函數好用。下一節,學習定義函數並且調用。



相關文章

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。