文章出處

本例主要是在上一個實例的基礎上進行擴展,計算鼠標跟隨對象來產生具有一定規律的星火特效。

本例思路

導入背景素材,然后制作出星火特效。

創建文檔類,產生鼠標跟隨的多角星形特效;創建元件類的擴展類,產生隨機大小的火花效果。

Part 1 制作星火特效

(1)新建一個大小為500×300像素,幀頻為30fps的空白文檔。按Ctrl+R組合鍵導入本書配套光盤中的“Chapter08/素材/西湖夜景.jpg”文件,然后設置其坐標為(0,0),如圖8-1所示,再采用前面的方法在“屬性”面板中添加Main文檔類。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-1 導入背景

(2)按Ctrl+F8組合鍵新建一個影片剪輯(名稱為Star_mc),進入該影片剪輯的編輯區域,然后按住Shift+Alt組合鍵的同時使用“橢圓工具”在該影片剪輯的中心點繪制一個圓形。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-2 繪制圓形

技巧與提示:

圖形的填充色類型為“放射狀”,第1個色標顏色為(R:255,G:0,B:0),第2個色標顏色為(R:153,G:0,B:0),第3個色標顏色為(R:153,G:0,B:0),Alpha為0%。

(3)新建一個star圖層,再單擊“工具箱”中的“多角星形工具”按鈕 ,并在“屬性”面板中設置好該工具的參數,然后按住Shift+Alt組合鍵的同時在影片剪輯的中心點繪制一個如圖8-3所示的星形。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-3 繪制多角星形

(4)使用“選擇工具”調整好星形的頂點位置,如圖8-4所示。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-4 調整頂點

(5)選擇調整好的多角星形,然后原位復制出一份,按Ctrl+Alt+S組合鍵打開“縮放和旋轉”對話框,設置縮放為40%,再設置其顏色為白色,如圖8-5所示。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-5 拷貝并縮放圖形

(6)返回到“場景1”,按Ctrl+F8組合鍵新建一個影片剪輯(名稱為Magic_mc),再設置填充類型為“放射狀”,第1個色標顏色為(R:255,G:255,B:255), 第2個色標顏色為(R:255,G:255,B:204),第3個色標顏色為(R:255,G:204,B:0),第4個色標顏色為(R:255,G:102,B:0),第5個色標顏色為(R:153,G:0,B:0),Alpha為0%,然后按住Alt鍵的同時使用“矩形工具”以該影片剪輯中心點為起點繪制一個如圖8-6所示的矩形。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-6 繪制矩形

(7)使用“任意變形工具”選擇矩形,然后按Ctrl+T組合鍵打開“變形”面板,設置旋轉為45°,再單擊“重制選區和變形”按鈕 ,復制出3份圖形,如圖8-7所示。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-7 復制圖形

(8)復制出5個圖形,然后將其調整成如圖8-8所示的顏色,再將復制出的圖形轉換為影片剪輯,并將其分別命名為01、02、03、04和05 。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-8 復制圖形

(9)將01、02、03、04和05 影片剪輯分別放置在Magic_mc圖層的5個關鍵幀上,然后分別為其添加不同的“發光”濾鏡,再新建一個AS圖層,最后在“動作-幀”面板中輸入stop():程序,如圖8-9所示。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-9 應用濾鏡效果

Part 2 創建元件類

(1)采用前面的方法分別為Magic_mc和Star_mc影片剪輯添加元件類,如圖8-10所示。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-10 添加元件類

(2)新建一個ActionScript文件,將其命名為Main,然后將其保存在該實例的文件夾中,再輸入控制代碼。

/**  
* 該類為主程序類  
* @author lbynet  
* @version 0.1  
*/  
package {   
    import flash.display.Sprite;   
    import flash.display.MovieClip;   
    import flash.events.Event;   
    import flash.events.MouseEvent;   
    import flash.ui.Mouse;   
    public class Main extends Sprite {   
           
        private var star:MovieClip;   
  
        public function Main() {   
  
            Mouse.hide();   
            this.star = new Star_mc();   
            addChild(star);   
            stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler);   
        }          
        private function moveHandler(e:MouseEvent):void {   
            this.star.x = stage.mouseX;   
            this.star.y = stage.mouseY;   
               
            var _mc = new Magic_mc();   
            _mc.x = stage.mouseX;   
            _mc.y = stage.mouseY;   
            addChild(_mc);   
            _mc.addEventListener(Event.ENTER_FRAME, RemoveDrop);   
        }   
        private function RemoveDrop(event:Event) {   
            var _mc:MovieClip = event.target as MovieClip;   
               
            if (_mc.scaleX <= 0) {   
                _mc.removeEventListener(Event.ENTER_FRAME, RemoveDrop);   
                removeChild(_mc);   
            }   
            //trace(this.numChildren)   
        }   
           
    }   
}

技巧與提示:

該文檔類基本包含了“星星灑落”實例中Main文檔類的知識,此外第18行代碼為Mouse類的hide()方法,用于隱藏鼠標指針,在使用該方法前必須先導入Mouse類(如第11行代碼)。

該文檔類定義了一個私有屬性Star,第19行代碼是為該屬性賦值,值為所創建的元件類(Star_mc),并將其添加到顯示列表中(如第20行代碼),而24和25行代碼是為該元件類應用鼠標跟隨效果。

(3)同樣新建一個ActionScript文件,然后輸入控制代碼。

/**  
* 該類為擴展元件類  
* @author lbynet  
* @version 0.1  
*/  
package {   
       
    import flash.display.MovieClip;   
    import flash.events.Event;   
  
    public class Magic_mc extends MovieClip {   
           
        private var dis:Number;   
           
        public function Magic_mc() {   
            init();   
        }   
        private function init() {   
            var Random = 1 + Math.round(Math.random()*4);   
            this.gotoAndStop(Random);   
               
            this.scaleX = this.scaleY = Math.random();   
            //產生隨機數-5到5之間的隨機數   
            dis = Math.round((Math.random()-.5)*10);   
            this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);   
               
        }   
        private function enterFrameHandler(event:Event) {   
               
            this.y += 5;   
            this.x += dis;   
               
            this.scaleX -=.005;   
            this.scaleY -=.005;   
        }   
           
    }   
}

技巧與提示:

第19和20行代碼是為該元件類創建一個1~5之間的隨機數,使該影片剪輯元件類在實例化(被創建時)時將播放頭移到并停止在指定的時間幀上。

Math.random()方法產生0~1之間的隨機數,Math.random()*4方法返回到0~4之間的隨機數,而Math.round()方法用于向上或向下舍入為最接近的整數并返回該值,所以1+Math.round(Math.random()*4)方法取得1~5之間的隨機整數值;gotoAndStop()語句使影片剪輯的播放頭移到并停止在指定的時間幀上。

通過使用Math.random()-0.5 方法來生成-0.5~0.5之間的隨機數,然后乘以10得到-5~5之間的隨機數,再使用Math.round方法進行舍入并取得整數,這樣當鼠標指針由下往上移動時,就會產生星火飄落的效果,如圖8-11所示。

Flash CS4制作夢幻的星火飄落效果,PS教程

圖8-11  星火飄落效果

第30行代碼是為火花加入y軸坐標方向上的一個固定加速度,而第31行代碼則是火花在x軸坐標方向上的一個-5~5之間的隨機加速度值。

(4)按Ctrl+Enter組合鍵發布程序。

進入論壇參與討論和交作業:http://www.missyuan.com/viewthread.php?tid=424468


歡迎轉載:http://www.kanwencang.com/bangong/20161116/54259.html

文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()