Flash AS3入門(mén)教程:用幀循環(huán)制作勻速運(yùn)動(dòng)
本教程是向大家介紹利用Flash AS3代碼編寫(xiě)用幀循環(huán)制作勻速運(yùn)動(dòng),介紹的很詳細(xì),轉(zhuǎn)發(fā)過(guò)來(lái),希望大家通過(guò)這篇教程能學(xué)會(huì)幀循環(huán)的運(yùn)用,給給初學(xué)Flash AS編程的朋友帶來(lái)幫助~~
多幀循環(huán)
Flash中的幀在默認(rèn)情況下是循環(huán)執(zhí)行的,租用gotoAndPlay()函數(shù)可以實(shí)現(xiàn)簡(jiǎn)單的幀循環(huán),而實(shí)現(xiàn)代碼的重復(fù)執(zhí)行。
gotoAndPlay()函數(shù)的用途是控制或改變影片剪輯的播放流程,如果在影片的第1幀畫(huà)面中放置需要重復(fù)執(zhí)行的程序,然后在第2幀加入gotoAndPlay(1)語(yǔ)句。反復(fù)執(zhí)行第1幀畫(huà)面的程序,那么gotoAndPlay()函數(shù)就構(gòu)成了一個(gè)循環(huán)程序結(jié)構(gòu)。
gotoAndPlay()函數(shù)沒(méi)有條件判斷功能,是無(wú)條件重復(fù)的循環(huán)結(jié)構(gòu)。但可以和if語(yǔ)句一起使用。形成具有判斷終止條件功能的循環(huán)。
下面用幀循環(huán)制作勻速運(yùn)動(dòng):
1、新建Flash文檔
2、在圖層1的第一幀創(chuàng)建一個(gè)實(shí)例名為mc的影片剪輯實(shí)例
3、新建as層,單擊第1幀輸入代碼:
var dx:Number = mc.x;
//定義速度
var speed:Number = 10;
4、在as層的第2幀插入空白幀,輸入代碼;
//橫坐標(biāo)加上速度
dx += speed;
//設(shè)置mc的橫坐標(biāo)
mc.x = dx;
5、在as層的第3幀插入空白幀,輸入代碼:
//判斷是否超出舞臺(tái)邊界
if(dx < stage.stageWidth)
{
//跳到第2幀并播放
this.gotoAndPlay(2);
//如超出舞臺(tái)的右邊界
} else
{
//停止播放
this.stop();
}
stage是Stage類(lèi)的實(shí)例,Stage類(lèi)有名為stageWidth的屬性,表示舞臺(tái)的寬度。
6、測(cè)試影片,可以看到影片實(shí)例會(huì)一直運(yùn)動(dòng)到舞臺(tái)的右邊界。
從測(cè)試結(jié)果看,影片的運(yùn)動(dòng)并不流暢,這與幀頻和幀循環(huán)結(jié)構(gòu)有關(guān)。Flash默認(rèn)幀頻是12FPS,就是一秒播放12幀。上面的程序由于使用了幀跳轉(zhuǎn)語(yǔ)句,實(shí)際需要每播放兩幀才會(huì)執(zhí)行第2幀的代碼一次,這就是說(shuō)第2幀的代碼執(zhí)行頻率是6FPS,所以動(dòng)畫(huà)效果會(huì)顯得不流暢。
圖層結(jié)構(gòu)圖示:

上面的例子執(zhí)行代碼的速度只有幀頻的一半,而且代碼分散,不適合制作復(fù)雜的應(yīng)用程序。我們可以利用enterFrame事件以幀頻的速度執(zhí)行代碼,而且代碼可以集中在一幀。
用enterFrame事件制作勻速運(yùn)動(dòng):
1、新建Flash文檔
2、在圖層1創(chuàng)建一個(gè)實(shí)例名為mc的影片剪輯
3、新建as圖層,單擊第1幀,輸入代碼:
stage.frameRate = 30;
//獲取mc初始位置
var dx:Number = mc.x;
//定義速度
var speed:Number = 5;
//注冊(cè)偵聽(tīng)器
mc.addEventListener(Event.ENTER_FRAME,onMove);
//定義事件接收函數(shù)
function onMove(e:Event)
{
//坐標(biāo)加速度
dx += speed;
//影片剪輯的坐標(biāo)
e.target.x = dx;
//如果影片運(yùn)動(dòng)到舞臺(tái)右邊界
if(ds > stage.stageWidth)
{
//移除enterFrame事件
mc.removeEventListener(Event.ENTER_FRAME,onMove);
}
}
代碼使用了Event類(lèi)的ENTER_FRAME屬性,接收函數(shù)中參數(shù)e是Event類(lèi)的實(shí)例,它具有target屬性,target表示事件發(fā)送者mc。
4、測(cè)試影片
使用enterFrame事件可實(shí)現(xiàn)代碼的重復(fù)執(zhí)行,它執(zhí)行的速度與幀頻有關(guān)。
提示:當(dāng)不需要使用enterFrame事件時(shí),一定要用removeEventListener()函數(shù)來(lái)刪除enterFrame事件。
以上就是Flash AS3代碼編寫(xiě)用幀循環(huán)制作勻速運(yùn)動(dòng),希望對(duì)大家有所幫助!
相關(guān)文章

flash cs6鼠標(biāo)跟隨效果實(shí)現(xiàn)代碼分享
flash cs6想要實(shí)現(xiàn)鼠標(biāo)跟隨效果?該怎么制作呢?今天我們就來(lái)看看使用as2.0實(shí)現(xiàn)鼠標(biāo)跟隨效果的教程,需要的朋友可以參考下2019-05-19
Flash cs6怎么使用代碼輸入中英文文本?Flash cs6中可以使用文字工具直接輸入文本,也可以使用代碼來(lái)輸入文本,該怎么使用代碼輸入文本呢?請(qǐng)看下文詳細(xì)的教程,需要的朋友2018-03-11
flash as3.0抽象類(lèi)怎么定義? as3.0中有很多抽象類(lèi),該怎么定義抽象類(lèi)和抽象方法呢?下面我們就來(lái)看看簡(jiǎn)單的例子,需要的朋友可以參考下http://www.fzitv.net/softs/408402.2018-02-28
flash cs6中怎么使用ActionScript3.0?
flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,該怎么使用呢?下面我們就來(lái)看看詳細(xì)的教程,需要的朋友可以參考下2018-01-25
Flash中怎么實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊決定圖像位置?
本教程給大家分享一個(gè)Flash小教程,教大家在Flash CS6中怎么實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊決定圖像位置?方法很簡(jiǎn)單,感興趣的朋友歡迎前來(lái)一起分享學(xué)習(xí)2018-01-12
Flash中如何用代碼將圖片放在自己想要的舞臺(tái)位置?
本教程教腳本之家的ActionScript教程學(xué)習(xí)者在Flash中如何用代碼將圖片放在自己想要的舞臺(tái)位置,教程講解的詳細(xì),感興趣的朋友歡迎前來(lái)分享學(xué)習(xí)2017-11-20
在Flash CS6中使用with函數(shù)繪制背景圖教程
本教程教腳本之家的ActionScript教程學(xué)習(xí)者如何在Flash CS6中使用with函數(shù)繪制背景圖?教程一步步講解的挺詳細(xì),方法也不難,非常適合Flash新手入門(mén)學(xué)習(xí)2017-11-18
Flash怎么設(shè)置元件坐標(biāo)?flash使用代碼設(shè)置元件的坐標(biāo)的教程
Flash怎么設(shè)置元件坐標(biāo)?flash中導(dǎo)如的元件需要添加坐標(biāo),該怎么定位元件坐標(biāo)呢?下面我們就來(lái)看看flash使用代碼設(shè)置元件的坐標(biāo)的教程,需要的朋友可以參考下2017-10-11
Flash怎么制作來(lái)回?fù)u擺的花朵的動(dòng)畫(huà)?
Flash怎么制作來(lái)回?fù)u擺的花朵的動(dòng)畫(huà)?Flash中想要給花朵制作一段搖擺的動(dòng)畫(huà)效果,該怎么制作呢?下面我們就來(lái)看看詳細(xì)的教程,很簡(jiǎn)單,需要的朋友可以參考下2017-05-23
Flash怎么制作流動(dòng)七彩色的文字?想要讓文字動(dòng)起來(lái),該怎么使用flash給文字制作一個(gè)流動(dòng)七彩色的動(dòng)畫(huà)呢?下面我們就來(lái)看看詳細(xì)的教程,需要的朋友可以參考下2017-04-23











