Flash高級技巧:全新Flash鏡頭的控制處理_Flash教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:Flash教程:純AS代碼制作的燃燒的火焰效果燃燒的火:純AS代碼火焰效果,Flash教程。希望大家理解把握!效果如下。希望需要的朋友拿去用,順便也希望拿走代碼的朋友能頂起來,不要只拿代碼不回帖,到時
前言: 該教程介紹了一種有別于傳統的Flash鏡頭控制方式, 其原理簡單但確能在某種程度上提高工作效率, 增加動畫的可看性, 讓一個動畫同時擁有不同角度的”拍攝”方式.那么就請先看以下示例:乍一看好似也看不出什么端倪, 無非就是過渡時多了雙向緩沖罷了, 其實在這個動畫中我并沒有對圖片作任何移動或縮放, 唯一處理的是一個稱為”camera”的影片剪輯, 如下:
在影片中單純的控制鏡頭的行為, 然后輸出動畫的時候, 動畫的內容就是鏡頭內的內容.
有愛好的直接進入教程內容
(注重: 教程對于初級的操作將不做多d 說明和截圖, 假如是初級用戶請先熟悉Flash一段時間再來學習此教程, 另外出于版本原因, 這里只提供Flash8.0版的源文件, 低版本的建議升級, 如真有需要低版本的源文件, 請E-mail聯系: imo8@163.com)
一: 普通用戶
對原理沒什么愛好的或AS把握不多的, 我們直接打開原代碼, 我來說明下如何使用即可.
[源文件下載]:點擊這里下載Fla源文件
打開源文件, 你可以大致了解一下, 內容和元件不多, 看一看其實就知道該怎么操作了.
當你要作自己的動畫的時候, 具體操作如下:
1: 更改場景大小, 情況自定
2: 打開庫(順便查看下庫里的文件), 雙擊”鏡頭”, 更改鏡頭大小, 與場景相同, 并且居中對齊
3: 返回場景, 解開遮罩鎖, 居中遮罩層的鏡頭,移動”影片載體”, 使藍色區域與場景重合(用邊框模式查看, 方便對齊)
4: 打開庫, 雙擊”影片內容”, 這里就是主要動畫的編輯位置了
5: 在場景中, 鏡頭可根據情況和需要進行操作, 亦可刪除, 結合使用, 沒有一定的方式, 究竟制作動畫的類型和情況很多, 這只是一種選擇方式, 至于適不適合還是依個人情況而定,更多的還是習慣問題…
二: 進階的使用, 多鏡頭處理
這是這個鏡頭控制最有趣的地方了, 當你對源文件的AS作了初步了解的時候, 你會發現其實都是很基礎的AS, 唯一的關聯就是鏡頭”camera” , 那么假如我在動畫中使用的多個鏡頭, 比如”camera1” “camera2””camera3”…
那么只要定義一個全局”camera”, 就可以隨意的在動畫中變換鏡頭了, 具體請查看下面這個flash:
[鬼斗測試版右鍵下載](建議下載后觀看,否則后果自負…)
(播放片頭動畫的時候按”空格”可跳過, 然后在格斗過程中按”C”切換鏡頭, Fast!! ) 當然這還不是應用的典范, 典范就等著大家去創造了!!
在源文件中修改很簡單, 使用eval 函數, 假如對eval函數不了解的下面有簡單介紹:
1: 由于鏡頭的命名方式是camera1,2,3…所以就在主時間軸的幀上定義一個came , 作為數字1,2,3…的代號
2: 修改影片載體和影片內容上的AS ,如下:
影片載體:
onClipEvent (enterframe) {
setProperty(this, _xscale, 10000/getProperty(eval("this.all.camera" _root.came), _xscale));
setProperty(this, _yscale, 10000/getProperty(eval("this.all.camera" _root.came), _yscale));
}影片內容:
onClipEvent (EnterFrame) {
setProperty(this, _x, -getProperty(eval("this.camera" _root.came), _x));
setProperty(this, _y, -getProperty(eval("this.camera" _root.came), _y));
}3:可根據不同情況去定義came,
例:
came = 1 ; 就是使用鏡頭1;
came = random (3) 1;
就是隨機鏡頭;
也可以用按鈕控制鏡頭, 或者AS控制. 記得控制的是 _root.came ;
三: 進階的基礎上再進階, 不同鏡頭在不同時間點上的切換
假設一個動畫的某場景中有2個人物, 畫面出現有20幀, 然后有2個鏡頭(camera1, camera2), 一個對準左邊的人物, 一個對準右邊的人物, 然后鏡頭1控制左邊的人物20幀后, 要使鏡頭2再次控制右邊的人物20幀, 這時就要在第二十幀加入代碼:
//假設該場景出現的幀是40;
gotoAndPlay(40)
_root.came = 2假如單純這樣的話, 那動畫不就進入無限循環了, 那就再想個方法吧:
在本時間軸上定義一個數: ova = 1; 然后在第60幀添加代碼:
if (ova == 1) {
_root.came = 2
gotoAndPlay(20);
ova = ova 1;
}這樣動畫就只會循環1次而已, 因為判定條件是ova == 1, 而第二次回來的時候ova已經 ==2 了
以上就是該”鏡頭”的使用方式了, 至于還有沒有更多的拓展性, 就看大家的巧思了!!
--------*關于eval函數--------------------------------------------------------------
其實AS我也是自學的, 算基礎型的吧, 所以復雜的不會, 更多的是變相的搭配, 從0到如今的過程中自然會碰到很多問題, 每一次的突破就是一次進步, 所以致所有Flash初級愛好者, 別異想天開的希望有人能教你, 這個自學的過程所必經的, 假如走不了, 過不去, 那玩玩就好, 別當真啊…哈哈…(自學在于書本以及網絡上的教程以及實踐)
eval: 針對含有變量的表達式的引用, 中階用戶在AS上經常會碰到相對路徑, 絕對路徑, 相對引用等問題, _root, _parent, “mc_name”等…當mc_name中包含變量, 比如: 當came為動態變量時, 用以下方式將無法得到正確引用;
came = random(3) 1 //時間軸
setProperty(_root.camera _root.came , _x, 300) //某MC上的命令, 以前我就陷入了這個僵局, 后來意外看到eval函數,才…)
對于路徑中含有多字符串組合的, 應采用eval(“_root.camera” _root.came)的格式來返回正確的目標路徑
(解釋可能不怎么清楚, 或有誤點, 自己看自帶的help 慢慢體會吧, 自學AS最好的方式還是Flash的自帶help)
最后提供一個說明性較強的源文件, 還不了解的同學就下載來多學習研究吧 ,希望我的這個小教程能對你有所幫助.[源文件下載]:點擊這里下載源文件
分享:Flash片頭loading與V2組件相關問題很早之前我曾經說過“沒有loading的Flash,不是完整的flash”。我想那個句話可能偏激了。因為有時候一些不到10k的flash,確實不需要做什么loading。但我始終認
相關Flash教程:
- 相關鏈接:
- 教程說明:
Flash教程-Flash高級技巧:全新Flash鏡頭的控制處理。