flash中影片剪輯的理解及其建立_第1頁
flash中影片剪輯的理解及其建立_第2頁
flash中影片剪輯的理解及其建立_第3頁
flash中影片剪輯的理解及其建立_第4頁
flash中影片剪輯的理解及其建立_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、上一篇教程出來以后,很多網友留言,問我為什么不直接講as3,而是很過時的嘮叨as2,這里首先澄清一下,as3是一個好東西,本博客并非要視as3為無物,在一個3.0的時代推崇2.0,而是2.0簡易教程這個系列,將主要以2.0為主。關于3.0的應用,我們也會在其它的一些系列或者相關的文章中提到。 至于本教程面對的對象,其實我在第0篇的嘮叨里已經說得很清楚了,就是針對那些已經使用過flash很多年,對flash產生了深厚的感情,甚至就是吃flash這碗飯的同志們,隨著flash越來越向技術平臺轉型,很多人可能覺得跟不上,覺得掉隊了,甚至對自己flash的能力產生了懷疑,所以,這系列其實就是想說,fl

2、ash as并沒有那么難,障礙在自己的心里。只要你愿意去做,你會發現你完全跟得上flash大潮的發展。所以,簡單點說,這個教程不是面對程序員的,恰恰就是面對設計師和動畫師的。這個回答可能很多人不喜歡,并且要問我,為何在一個程序員云集的博客發給設計師的東西。我要說首先互聯網是開放的,其次,像博客園這樣執著于專業領域的網站實在不多。 好的,廢話結束,下面開始講課。 用過flash的人都知道,flash中,有一個很重要的概念:影片剪輯(一般,我們簡稱為mc),它幾乎是flash一切動畫的基礎。Flash這東西,一言以蔽之,就是如何讓很多影片剪輯在界面里按你想象的運動起來?;瑒?、變大、變小、旋轉、顯示

3、、消失就是這些最基礎的運動,構成了flash,甚至是說任何圖形界面的軟件的最基本的交互和展現形式。在關鍵禎時代,我們用關鍵禎來進行這些最基本的事情,在as時代,我們用as來做,如此而已。 在早期的flash版本里邊,我們都知道,按鈕司交互,影片剪輯管運動,所以,以前大家做一個flash,思路很簡單,我需要一個東西有交互行為,說白了就是我點點點,他動動動,就直接做個按鈕,放到庫里,再拖到場景里用;我需要一個東西動起來,直接建一個影片建立,放到場景里,再拖到場景里用。在as時代,我們用as來做,首先需要明白的也是這一點。(上面這兩段看不懂的同學,請先找一些flash軟件使用的最基本教程看一下,至少

4、了解一下庫是什么東西,影片剪輯應該如何建立)。 一、用代碼建立空的影片剪輯 在flash as里,我們同樣可以建立影片剪輯。所以,今天咱們先來說一下如何建立影片剪輯。 打開flash軟件,鼠標點中時間軸上的第一禎。然后打開動作面板,在里邊輸入如下的語句: this.createEmptyMovieClip(“myMc”,1; 這就在場景里邊建立了一個名為myMc的影片剪輯。當然,目前為止,你看不到 這個影片剪輯,因為他是空的。 關于上面這句話,有幾點我們先解釋一下。 this指的是這個影片剪輯的作用域,簡單點說,就是我是在這一禎上建立的影片剪輯。 “.”是flash最典型的點語法,說簡單點,就

5、是你可以把它理解為“的”或者“下的”或者“屬于他的”,高深專業的解釋這里暫時就不講了,只會增加初學者的理解難度。我可以不太負責任的告訴大家,你可以不太規范的認為,flash在表示“的”,“下的”,“屬于他的”時候都用“.”來表示。 比如剛才這句,你可以理解為在“this”下面建立空的影片剪輯。 再比如this.myMc._x,你可以理解為this下面的myMc的_x。 這樣說對一些談程序色變的美工更容易接受一些。 再后面的部分createEmptyMovieClip,看起來很長,但是如果你E文足夠好,應該能看出來,這就是創建空的影片剪輯的英語。所以,這句話還是很好記的。當然,在程序命令里,他把

6、這幾個單詞都連接起來了,并且中間每個單詞的第一個字母大寫。這種寫法很形象地被稱為“駱駝式”命名法。Flash里邊的變量名、屬性、方法、命令等等,基本都遵循這種規則。你如果希望你寫的程序看起來比較專業,同時還容易理解,希望你也一開始養成良好的命名習慣,堅持使用“駱駝式命名法”。還有一點需要強調的是,flash是嚴格區分大小寫的,所以,“myMc”和“mymc”并不是一個東西,如果你寫的程序怎么調試都不對,記住檢查一下大小寫的問題。這是初學者經常會犯的錯誤。 再看后面,("myMc”,1),前面是你為影片剪輯命的名,后面是它的深度,命的名很好理解。深度需要解釋一下,用過flash或者ph

7、otoshop的人都知道,有一個層的概念,上面的層會壓住下面的層。深度也是一個類似的概念。深度值越大,越在上面,深度值越小越在下面。但是深度有幾點和層不同的概念需要記住。 第一, 一個深度上只能有一個東西存在。如果有兩個的話,后面建立的會覆蓋掉前面的。 第二, 所有在場景里通過繪圖工具和拖拽而不是程序建立的對象,默認的處于第0層,也就是說,你用程序建立的影片剪輯,都會蓋住里處于時間軸上的那些對象。不管這些對象在時間軸上是第幾層,都會在程序建立的影片剪輯下面。 所以,這兩點就告訴我們,第一,如果你已經在一個深度上建立了一個影片剪輯,再建立下一個的時候,換個深度。 比如, this.createE

8、mptyMovieClip(“myMc”,1; this.createEmptyMovieClip(“myBtn”,1; 這樣的寫法是錯誤的,第一個影片剪輯,myMc被覆蓋了。 正確的寫法應該是這樣的 this.createEmptyMovieClip(“myMc”,1; this.createEmptyMovieClip(“myBtn”,2; 或者 this.createEmptyMovieClip(“myMc”, this.getNextHighestDepth(; this.createEmptyMovieClip(“myBtn”, this.getNextHighestDepth(;

9、getNextHighestDepth(是獲得上一深度的意思;以確保 Flash 將該影片剪輯呈現在當前影片剪輯中同一級和同一層上所有其它對象的前面。 第二點,如果你在場景里,用工具建立了一個影片剪輯,或者從庫里拖出來一個影片剪輯,放到場景里了,現在你想把它放到剛才你用createEmptyMovieClip建立的影片剪輯上面,默認的情況下不可能。你會看到,createEmptyMovieClip建立的影片剪輯把它給蓋住了。 好了,現在我們就學會了如何用程序建立一個影片剪輯。 那邊有同學說了,你建立了半天,但是我一發布,啥都沒有,我建立這個空的影片剪輯有啥用呢? 這個問題,我來回答,首先,大家

10、都知道,flash的影片剪輯不僅僅是為了顯示一個可見的東西,還有一個重要的作用,就是容器。影片剪輯可以作為放別的影片剪輯或者其他對象的容器。你可以把需要一起運動的很多東西,放到一個影片剪輯里,這樣指揮它們運動的時候比較方便。就像你如果把一個蘋果、一個梨、一個香蕉,從a處移動到b處,一種方法是把它們分別移動過去,還有一種方法,是放到一個籃子里,一起移過去。容器在這個動畫里的作用,就是這個籃子。 第二點,你現在之所以看不到你建立的影片剪輯,是因為你還沒有對它進行任何操作。如果你真的非要看到它才放心,請把下面這段代碼拷到你的程序下面。這段代碼的作用是在myMc的影片剪輯里畫了一個黑色的長方形,至于具

11、體如何畫的,我們以后會講。愿意研究的人,可以先熟悉一下。 with(this.myMc beginFill(0x000000,100; moveTo(0,0; lineTo(200,0; lineTo(200,100; lineTo(0,100; lineTo(0,0; endFill(; 好了,現在發布一下,(不知道發布是什么的同學,請按enter+ctrl,就發布了)看到了吧? 那邊又有一位同學有意見了。你這么費勁,打了半天字,寫了這么多行,才花了這樣一個正方形,效率太低了,我用繪圖工具,一比劃,就出來了。比你快多了,不知道你寫這么多行程序有什么用? 首先,第一繪圖工具在作矢量圖型方面,的

12、確比用代碼生成更快。這也是flash的優勢所在。 第二、 代碼生成并非沒有用處,這個以后隨著學習的深入,大家就逐漸明白了,這兒不廢話了。 二、從庫中加載影片剪輯 當然,既然flash在繪圖方面有自己獨到的優勢,并且我們平時應用中經常將用ps或其他軟件做好的圖型直接導入flash的庫中 ,供影片剪輯調用,如果flash as 僅僅為了代碼化,就把這一優勢扔掉,就是昏了頭了。所以flash as里邊,除了createEmptyMovieClip來建立影片剪輯以外,還有一種方法,可以直接把庫中的影片剪輯加載到場景中來。 我們先回憶一下,如果不用代碼,直接把庫里的元件放到場景里,怎么辦?對,很簡單。直

13、接一拖,就過來了。用代碼來實現應該怎么做呢? 首先在庫中找到你要加載的影片剪輯,用右鍵點擊他,選“鏈接”,彈出一個小框。選中“為action script導出”,此時你可以看到,“在第一楨導出”同時也被選中了。在標識符框中,填入你為這個影片剪輯起的標識符。在這里建議影片剪輯的名稱和標識符統一起來,比較便于管理。比如你的影片剪輯叫“myMc”,標示符最好也叫“myMc”,點擊確定。 然后返回主場景,選中第一禎,在動作面板里寫入 this.attachMovie(“myMc”,”myMc”, this.getNextHighestDepth(; 然后發布,看一下,你的影片剪輯是不是已經在場景里了?

14、 這兒解釋一下這句命令,this.就不用說了,后面attachMovie就是把場景里標示符為myMc的影片剪輯,加載到庫里,并命名為myMc,當然,你也可以不叫它myMc,而叫它aaa,這樣,上面的那段話就變成 this.attachMovie(“myMc”,”aaa”, this.getNextHighestDepth(; 你也可以把myMc從庫中取出來兩次,一次叫myMc,一次叫aaa, this.attachMovie(“myMc”,”myMc”, this.getNextHighestDepth(; this.attachMovie(“myMc”,”aaa”, this.getNext

15、HighestDepth(; 這樣你下面寫myMc就是指第一個,寫aaa就是指第二個。 說到這兒,又有同學有意見了,你這樣作還是很麻煩,哪有我這邊一拖,這么簡單啊。 的確,當你僅僅對一個影片剪輯執行這樣的操作的時候,的確效率不高,但是,如果你需要把myMc這個影片剪輯從庫中取出來100次甚至1000次的話,請問,這位同學,你拖來拖去的,是不是有點腰酸背痛腿抽筋呢。 但是用代碼來實現的話,一切都變得簡單了 for(i=0;i<100;i+ this.attachMovie(“myMc”,”myMc”+i, this.getNextHighestDepth(; 看看,就這樣三行代碼,就完成了一百次,如果你想用1000次,直接把i<100,改成i<1000就OK了,從此腰不酸了,背不疼了,腿也不抽筋了。 上面用到的就是程序里邊最常用到的一種循環方式,for循環,沒見過的同學可以先多看幾眼,混個臉熟,以后,咱們還會詳細介紹。 如果你想把影片剪輯從庫中取出來,讓他橫著排列,每隔50個像素放一個, for(i=0;i<100;i+ this.attachMovie(“myMc”,”myMc”+i, this.getNextHighestDepth(,_x:(50*i; 如果你想把影片剪輯從庫中取出來,讓他豎著排列,每隔50 個像素放一個,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論