背叛時間軸·突破IDE_Flash教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:用Flash動畫特效制作:文字炸開
      想必喜歡Flash制作的朋友一定對一些非凡的效果很感愛好,今天跟大家一起分享下用Flash6.0制作“爆炸字體”的方法。其他版本方法和步驟類似。最終效果:第一

      首先我想要申明,這個標題確實夸張了。只是希望通過這種夸張能引起各位不愿意重視ActionScript的Flashers的注重。
      其實每一個Flasher,非凡是經歷過Flash4、Flash5的這一批人,都是常年通過實踐周來部署作品界面的。包括我自己,對時間軸的熟悉也經歷了一個比較長的過程。這個過程中,我也距離Flash的思想越來越近。
      先說說IDE的概念吧,相信對于一個界面或者動畫設計師來說,IDE絕對是一個足夠生疏的名詞。其實,我們天天用到的Flash就是一個IDE環境。我在這里更準確地引用如下概念,相信看完后IDE這個詞將不再生疏:
      引用 wikilib.com
      集成開發環境(Integrated Development Environment,簡稱IDE),又名集成編程環境或可視化開發環境,是為方便軟件開發人員進行開發而設計的軟件,一般針對某一編程語言開發,大多數為界面友好的可視化環境,一般整合源代碼編輯器、調試器、編譯器和資源編輯器。 顯然,時間軸是IDE的一部分,但我更愿意把時間軸分離出來強調,甚至適度夸張地批判。因為有時候時間軸確實粗笨的。假如您不是一個逐幀動畫高手,而是一個以開發Flash應用程序(尤其是游戲)的設計師,我想時間軸許多情況下所表現的特性顯得十分尷尬。比如MotionTween看起來只有兩個要害幀,其實之間的漸變幀都是要耗占文件體積的。
      此外,有很多情況下,我們需要動態的治理一些場景上的元素。假如用時間軸,我想恐怕只能用最土的gotoAndPlay、gotoAndStop配合使用了。當然,在Flash4、Flash5時代,確實造就了一批頂級高手,他們僅用gotoAndPlay來完成任務,這些人有著嚴謹的邏輯思維能力和極好的心態。然而到了MX時代,尤其是MX2k4時代,AS的飛躍發展,導致之前的這種天才設計模式淪為一介莽夫之舉!
      Flash5中attachMovie的出現,無疑是一場革命性的發展。可惜那個時候用attachMovie的人并不多,因為相比時間軸,它確實挺麻煩的。由于項目需求在那個時候與現在不同,時間軸效果仍然是主流的開發手段。
      MX時代最大的革命我印象最深刻的其實是IDE。Flash5中愚昧的面板到了MX變得那么乖巧聽話。MX時代的到來引發了一場Flash制作風暴,越來越多的人(主要是動畫制作為主)加入到Flasher這個隊伍中來。可惜后來MX2k4和8改變了界面,其實我個人挺喜歡MX的IDE界面設計的。ú恢酪院髸粫瞥鲆粋可制定IDEskin的懷舊版)
      MX和MX2k4的推出,使得AS更加規范,項目需求的改變,導致時間軸的效果越來越顯得捉襟見肘了。更多的人開始投入動態部署場景的行列,然而值得一提的是,有一些老一輩Flash設計大師似乎仍然不為之所動,MM推出的時間軸特效更是MX2k4的一大敗筆。當然瑕不掩瑜,AS2.0給MX2k4予以無限光線,這段時間涌現了大量的AS-coder,水平參差不齊,不論如何,這是另一場革命!
      這個時代中,項目需求又有所變化,越來越多的復雜的應用程序要通過Flash來完成,要不是半路殺出一個AJAX,我懷疑Javascript真的要被Actionscript蓋住光線了。我自己獨立完成的56涂鴉也是使用的MX2k4完成的。
      現在到了8,雖然AS沒有實質上變革,但項目需求又一次提高,時間軸完全不能獨立部署一個優秀的應用程序了。更多的人開始關注Actionscript,開始關注attachMovie這樣一個曾經被我們因“麻煩”而嫌棄的語句。
      不想太純粹的討論技術,于是發了以上一些胡言亂語,現在還是簡單介紹一些attachMovie吧。
      首先,要明白Flash的基本編譯原理。SWF文件中的內容無疑主要來自于庫,這個概念相對大家都不會生疏(就是Library)。庫中包含了所有的時間軸引用的元件,當然_root也是一個MC元件,它也包括所有的在IDE中的零散圖形。剩下的內容就是庫中含有linkage ID的元件了。這些元件就是attachMovie的最重要的操作對象!
      不想強調太多的理論知識,因為這些內容都可以在幫助文檔中找到。我想結合自己的開發經驗談一談:
      首先,attach的內容,盡量不要attach到_root下。因為本來就是要動態的治理MC,假如清一色放到_root下,會導致分類不明確,很難高效率調度、治理MC。我建議在_root下動態建立一個MC。比如,你有一個游戲中,要防止對手和友軍,那不妨就建立兩個MC容器“NPC_mc”“Enemy_mc”,然后再對這兩個mc進行attache:
      var NPC:MovieClip = _root.createEmptyMovieClip("NPC_mc",1);
      var EMY:MovieClip = _root.createEmptyMovieClip("Enemy_mc",2);
      for (var i=0;i<iMax;i )
      NPC.attachMovie(....);
      for (var j=0;j<jMax;j )
      EMY.attachMovie(....); 其次,由于是動態建立MC,很多時候我們無暇治理深度,Macromedia Flash 2k4以來,提供了一個非常重要的方法:getNextHightestDepth(),這個方法可以找到當前MC中最深的一個深度,然后以Number型返回。
      這樣一來,我們經常會看到2k4版本后的一些“模版式”代碼:
      //某循環內
      var d:Number = this.getNextHighestDepth();
      this.attachMovie("someLibStr","myMC" d,d);
      //某循環內 顯然,代碼簡單易懂,非常適合動態部署大量的MC(配合循環)
      動態地刪除則是removeMovieClip,這個語句非常簡單,就不贅述了。
      最后整理一些常見問題:
      ·庫中的連接名給錯
      ·自命名沒有隨層級變化而變化,強烈推薦用一個名詞 深度來命名。
      ·深度序號未定義,造成MC指向undefined
      ·母MC未定義(這個輕易在含有function的情況下出現)
      所有這些問題通過trace絕對可以找到,大家多點耐心就行了。
      最后祝大家順利突破IDE、打破時間軸的限制!

      分享:巧用Flash的Media組件實現多首mp3連播
      FlashMX2004的Media組件確實不錯,大家在使用的時候可能發現MediaDisplay組件只能播放一首mp3,假如要讓它播放完一首歌曲后再接著播放另一首歌曲就不行了。今

      來源:awblog//所屬分類:Flash教程/更新時間:2008-03-05
      相關Flash教程