首先啟動(dòng)Flash,新建一個(gè)大小為500px*400px,背景色為黑色的影片。
既然制作的效果是火焰,自然少不了一個(gè)簡(jiǎn)單的火焰效果,然后通過(guò)Action的控制,就可以變化出變幻莫測(cè)的火焰來(lái)。所以新建一個(gè)Movie clip組件,命名為fires,進(jìn)入組件的編輯狀態(tài)后,使用橢圓工具繪制一個(gè)長(zhǎng)條形的橢圓,使用箭頭工具將橢圓的兩個(gè)尖調(diào)整的細(xì)一點(diǎn),然后使用顏料桶工具將其填充為黃色和黑色的線性填充色,如圖1所示:
然后分別在圖層layer1的第5楨和第8楨插入兩個(gè)關(guān)鍵楨,回到第5關(guān)鍵楨,將此禎的橢園對(duì)象的長(zhǎng)度調(diào)整的長(zhǎng)一些,如圖2所示:
分別建立第1關(guān)鍵楨到第5關(guān)鍵禎和第5關(guān)鍵楨到第8關(guān)鍵楨之間的Motion運(yùn)動(dòng)過(guò)渡效果,時(shí)間線如圖3所示;
既然我們的這個(gè)火焰效果是可以變化顏色的,所以現(xiàn)在就來(lái)制作控制火焰顏色變化的Action控制代碼。新建一個(gè)Movie clip,命名為color,進(jìn)入組件的編輯狀態(tài)后,在圖層layer1的第1楨添加如下Action:
col = Random(0xafafaf)+0x999999;
//使用random隨機(jī)函數(shù)取隨機(jī)值,其中0xafafaf和0x999999為16進(jìn)制數(shù),16進(jìn)制//數(shù)常用于顏色設(shè)置。Col變量接受產(chǎn)生的隨機(jī)數(shù)
firecol = new Color(_root["fire"and i]);
ffcol = new color(_root.ff);
//定義兩個(gè)color類(lèi)的對(duì)象firecol和ffcol
firecol.setRGB( col );
ffcol.setRGB( firecol.getRGB()+0xfaff44 );
//兩個(gè)color類(lèi)的對(duì)象firecol和ffcol分別被設(shè)置了相應(yīng)的顏色
在圖層layer1的第2楨添加如下Action:
col = col+0x0f0f0f;
//重新設(shè)置變量col的值
firecol.setRGB( col );
ffcol.setRGB( firecol.getRGB()+0xfaff44 );
//重新設(shè)置兩個(gè)color類(lèi)的對(duì)象firecol和ffcol的顏色值
在圖層layer1的第10楨添加如下Action:
gotoAndPlay(2);
//返回到第2楨
這樣,我們需要的所有組件就都準(zhǔn)備好了,接下來(lái)就需要布置主場(chǎng)景了。
回到主場(chǎng)景中,將組件fire從圖庫(kù)中拖到圖層layer1中,并放置到舞臺(tái)的合適位置,在屬性面板中命名其為ff,然后將圖層layer1延伸到第3楨,如圖4所示:
新增一個(gè)圖層layer2,將組件color拖到工作區(qū)的任意位置即可,因?yàn)榻M件layer2中沒(méi)有任何圖形對(duì)象,全部為Action控制代碼,所以組件color放置到工作區(qū)時(shí)只能看到一個(gè)空的圓圈,說(shuō)明這個(gè)是一個(gè)空的Movie clip.
再新增一個(gè)圖層layer3,在第1楨添加如下Action控制代碼:
if (i>10) {
i = 0;
}
i++;
duplicateMovieClip("/ff", "fire"and i, i);
setProperty("fire"and i, _x, _root.ff._x+Random(7)-3);
setProperty("fire"and i, _y, _root["fire"and (i-1)]._y-60*Math.pow(0.6,i));
setProperty("fire"and i, _xscale, Math.pow(0.95,i)*100);
setProperty("fire"and i, _yscale, Math.pow(1.05,i)*100);
//復(fù)制10個(gè)對(duì)象ff的副本,然后分別設(shè)置副本的坐標(biāo)和縮放尺寸。
在圖層layer3的第3楨添加如下Action控制代碼:
if (i>10) {
i = 0;
}
i++;
duplicateMovieClip("/ff", "fire"and i, i);
setProperty("fire"and i, _x, _root.ff._x+Random(7)-3);
setProperty("fire"and i, _y, _root["fire"and (i-1)]._y-60*Math.pow(0.55,i));
setProperty("fire"and i, _xscale, Math.pow(0.95,i)*100);
setProperty("fire"and i, _yscale, Math.pow(1.05,i)*100);
gotoAndPlay(1);
//上面的Action和第1楨中的完全相同,目的是重復(fù)執(zhí)行這段代碼。
最后的時(shí)間線如圖5所示:
本實(shí)例的最終效果如圖6所示: