日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Flash AS3.0教程:學習幀循環(huán)的運用

 樂樂媽 2010-05-05

Flash AS3.0教程:學習幀循環(huán)的運用

來源:中國教程網(wǎng)
http://www. 2009-11-17 00:38:40

本例為Flash AS3.0菜鳥學飛系列教程,在上一講中我們學習了含有多個類的AS3類文件的寫法,在這一講中我們來學習幀循環(huán)的運用,希望能給初學Flash AS編程的朋友帶來幫助~~

多幀循環(huán)

Flash中的幀在默認情況下是循環(huán)執(zhí)行的,租用gotoAndPlay()函數(shù)可以實現(xiàn)簡單的幀循環(huán),而實現(xiàn)代碼的重復執(zhí)行。

gotoAndPlay()函數(shù)的用途是控制或改變影片剪輯的播放流程,如果在影片的第1幀畫面中放置需要重復執(zhí)行的程序,然后在第2幀加入gotoAndPlay(1)語句。反復執(zhí)行第1幀畫面的程序,那么gotoAndPlay()函數(shù)就構(gòu)成了一個循環(huán)程序結(jié)構(gòu)。

gotoAndPlay()函數(shù)沒有條件判斷功能,是無條件重復的循環(huán)結(jié)構(gòu)。但可以和if語句一起使用。形成具有判斷終止條件功能的循環(huán)。

下面用幀循環(huán)制作勻速運動:

1、新建Flash文檔

2、在圖層1的第一幀創(chuàng)建一個實例名為mc的影片剪輯實例

3、新建as層,單擊第1幀輸入代碼:

//得到mc的橫坐標

var dx:Number = mc.x;

//定義速度

var speed:Number = 10;

4、在as層的第2幀插入空白幀,輸入代碼;

//橫坐標加上速度

dx += speed;

//設置mc的橫坐標

mc.x = dx;

5、在as層的第3幀插入空白幀,輸入代碼:

//判斷是否超出舞臺邊界

if(dx < stage.stageWidth)

{

//跳到第2幀并播放

this.gotoAndPlay(2);

//如超出舞臺的右邊界

} else

{

//停止播放

this.stop();

}

stage是Stage類的實例,Stage類有名為stageWidth的屬性,表示舞臺的寬度。

6、測試影片,可以看到影片實例會一直運動到舞臺的右邊界。

從測試結(jié)果看,影片的運動并不流暢,這與幀頻和幀循環(huán)結(jié)構(gòu)有關。Flash默認幀頻是12FPS,就是一秒播放12幀。上面的程序由于使用了幀跳轉(zhuǎn)語句,實際需要每播放兩幀才會執(zhí)行第2幀的代碼一次,這就是說第2幀的代碼執(zhí)行頻率是6FPS,所以動畫效果會顯得不流暢。

圖層結(jié)構(gòu)圖示:

Flash AS3.0教程:學習幀循環(huán)的運用_網(wǎng)頁教學網(wǎng)

上面的例子執(zhí)行代碼的速度只有幀頻的一半,而且代碼分散,不適合制作復雜的應用程序。我們可以利用enterFrame事件以幀頻的速度執(zhí)行代碼,而且代碼可以集中在一幀。

用enterFrame事件制作勻速運動:

1、新建Flash文檔

2、在圖層1創(chuàng)建一個實例名為mc的影片剪輯

3、新建as圖層,單擊第1幀,輸入代碼:

//動態(tài)更改幀頻

stage.frameRate = 30;

//獲取mc初始位置

var dx:Number = mc.x;

//定義速度

var speed:Number = 5;

//注冊偵聽器

mc.addEventListener(Event.ENTER_FRAME,onMove);

//定義事件接收函數(shù)

function onMove(e:Event)

{

//坐標加速度

dx += speed;

//影片剪輯的坐標

e.target.x = dx;

//如果影片運動到舞臺右邊界

if(ds > stage.stageWidth)

{

//移除enterFrame事件

mc.removeEventListener(Event.ENTER_FRAME,onMove);

}

}

代碼使用了Event類的ENTER_FRAME屬性,接收函數(shù)中參數(shù)e是Event類的實例,它具有target屬性,target表示事件發(fā)送者mc。

4、測試影片

使用enterFrame事件可實現(xiàn)代碼的重復執(zhí)行,它執(zhí)行的速度與幀頻有關。

提示:當不需要使用enterFrame事件時,一定要用removeEventListener()函數(shù)來刪除enterFrame事件。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多