- 尋聲記:Scratch 3.0趣味編程之旅(全彩)
- 王曉輝
- 2347字
- 2020-07-24 17:47:33
2.3 造型的動畫
吃飽喝足,呱呱喵的心情好了一些。
“感謝你的西瓜,盡管這西瓜不是彩虹色的?!?/p>
喵喵呱想了半天,想象不出彩虹色的西瓜什么樣,但還是很有禮貌地回答:“不用謝?!?/p>
呱呱喵:“為了表示我的謝意,我給你唱首歌吧?”
說完也不等喵喵呱同意,張嘴就唱了起來:“許多小動物,在唱著歌~~喵嗚,喵嗚~~真快樂!”
喵喵呱趕緊捂住呱呱喵的嘴:“你別唱了,我聽著你喵嗚就鬧心?!?/p>
呱呱喵不滿意了:“那你來唱一個。”
喵喵呱很為難,一直都覺得自己呱呱的叫聲不好聽,沒練習過唱歌。
“我不會唱歌?!边鬟鬟商拱住?/p>
“那你出個別的節目。”呱呱喵這次很好說話。
“朗誦吧!”喵喵呱想了想,它覺得貓的朗誦挺好。然后拿出了第1章的朗誦作品放給呱呱喵看。
沒想到呱呱喵一蹦三尺高:“你這是假唱!不對,還不如假唱呢?!?/p>
喵喵呱很茫然:“我這是朗誦。”
呱呱喵很生氣:“人家假唱,起碼嘴還在動,你這啥都沒動?!?/p>
讓嘴動起來這件事情其實不難做,但你要明白“動”是怎么回事。人的眼睛看到的影像會暫留一剎那,也就是說,實際圖像消失之后,其影像還會暫時停留在眼前,這叫視覺暫留。利用這一原理,在一幅畫的影像還沒消失前,播放下一幅畫的影像,就會給人帶來一種“動”的感覺,如圖2-30所示。

圖2-30
喵喵呱:“這個一剎那是多久呢?”
通常來說,人看到的物體形象在1/24秒的時間內不會消失,所以每秒播放24張以上的連續畫面,看起來就是連續的動作。
喵喵呱驚呼:“天哪!也就是說,我起碼要為貓的嘴巴繪制24張畫面才有動的感覺嗎?”
不是這樣的,雖然每秒24張畫面號稱全動畫,但實際播放卻并不是非常流暢。想要看到流暢的動作,每秒起碼需要25~30張畫面。而要想讓所有的人都感覺不到卡頓現象,那就需要每秒60張畫面。在Scratch 2.0中,以每秒30張畫面來展示動畫效果,而在Scratch 3.0中,這個數字變成了60。
喵喵呱:“我打算放棄了……”
不要被數據嚇倒,動畫片的制作通常采用“一拍一”、“一拍二”、“一拍三”這三種常見方式。解釋一下,就是每一張畫面拍幾次,換算一下就是一秒24張畫面、12張畫面或者8張畫面。
喵喵呱:“那也不少!”
平均每秒8張,那只是平均數字,這個數字根據要表現的內容是不斷變化的。例如,通常的動作是8張,但激烈的動作可能是24張,靜止畫面只要一張就可以。如果是有關對話的畫面,一般只要畫嘴的小、中、大三個造型,也就是三張畫面就可以。

圖2-31
喵喵呱:“如果是這樣,只需要張嘴和閉嘴兩個造型就可以吧?
要求不高的話確實沒有問題,而且在Scratch中延遲的時間一般控制在0.1秒就可以?,F在打開第1章中貓的朗誦文件,切換到“造型”標簽,你會發現這只貓本來就有兩個造型,現在刪掉一個。在造型縮略圖上單擊鼠標右鍵,選擇刪除,或者單擊縮略圖右上角的按鈕都可以。然后復制第一個造型。
使用選擇工具選中小貓,會發現只能選中小貓的整個頭部。這對單獨修改嘴的造型造成了不便。仔細觀察發現,畫布上方的拆散按鈕是可用的,說明這種情況是因為小貓整個頭部被合成了一個分組,我們只需要單擊拆散按鈕把分組打散,小貓的嘴部造型就被單獨分離出來了,如圖2-32所示。

圖2-32
喵喵呱:“我單擊了一次后完全沒有效果!”
只要拆散按鈕是可用的,就可以一直單擊,直到你想要的效果出現?,F在把畫面放大一些,使用修改工具細微調整一下嘴巴的大小,就像圖2-33所示的畫面這樣。

圖2-33
調整滿意之后,連續復制兩次,復制出第三、四個造型?,F在小貓有四個造型,其中造型2~造型4都是一樣的。觀察發現下,嘴巴的大、中、小三個造型已經有兩個了,也就是大、中造型,現在來調整第三個,也就是小的造型。刪掉嘴巴,重新畫一條曲線就可以,如圖2-34所示。

圖2-34
喵喵呱:“我很好奇,說好了需要三個造型,你為什么鼓搗出四個來?
第四個造型其實是一個制作技巧,現在口型動畫是以“大、中、小”的順序來切換的,如果沒有第四個造型,動畫會以“大、中、小、大……”的順序循環,出現了“小、大”的銜接跳轉,影響了動畫的效果。
喵喵呱:“有點‘燒腦’,我一會兒刪掉第四個造型試試?!?/p>
挺好,實踐出真知?,F在造型已經繪制好了,需要連續切換才能播放出運動的感覺。造型切換的時間可以使用“等待……秒”積木把控,那么你會怎么寫小貓的腳本呢?
喵喵呱:“簡單!按照圖2-35所示的做就可以?!?/p>

圖2-35
你不覺得這樣寫有問題嗎?
喵喵呱:“我測試過的,很流暢?!?/p>
好吧!這樣寫雖然沒有問題。但你可能還不知道有“重復執行”積木。對編程來說,執行命令有順序執行、循環執行、條件執行和分支執行等多種方式。之前所做的程序都是以順序執行的方式來編寫的。簡單地說,1、2、3、4這種逐一執行命令積木的方式,但是這次出現了1、2、1、2、1、2這樣執行的情況,這時使用重復執行1、2的方式可以大大減輕工作量。
喵喵呱:“這個積木我找到了,就在‘控制’標簽下,它是一個半包圍結構的積木,是不是把需要重復執行的積木堆砌到它的包圍圈里就可以?”
沒錯,其實“重復執行”相關的積木有三個,分別是重復執行、重復執行……次、重復執行直到……,如圖2-36所示?!爸貜蛨绦小睍恢眻绦邢氯?;“重復執行……次”是給重復執行限定了一個次數,重復到設置的次數之后,繼續往下順序執行。目前,你能弄明白前兩個的用法就可以。至于第三個,以后用到的時候再說。

圖2-36
喵喵呱:“哎!還賣關子?”
我們的腳本可以這樣寫(見圖2-37)。如果說只讓小貓說2秒的話,那就使用計次的重復執行。
喵喵呱:我算算,一次0.1秒,2秒就是20次。
數學還挺好,最后的腳本和效果應該是圖2-37所示的樣子。

圖2-37
動手做
1.請制作小貓一邊眨眼,一邊說話的動畫效果。
2.使用造型相關功能制作任一角色,從舞臺左面逐漸移動到舞臺右面的動畫。
問問你
這種使用造型逐一變化來做動畫的方法叫作逐幀動畫。從道理上說,任何動畫效果都是逐幀動畫制作的。就你目前的認知來說,你認為這種動畫制作方式分別有什么優點和缺點呢?

- Mastering Concurrency Programming with Java 8
- Cocos2d Cross-Platform Game Development Cookbook(Second Edition)
- OpenShift開發指南(原書第2版)
- Dynamics 365 Application Development
- Rake Task Management Essentials
- Instant QlikView 11 Application Development
- JavaScript+Vue+React全程實例
- Oracle JDeveloper 11gR2 Cookbook
- 零基礎學Python網絡爬蟲案例實戰全流程詳解(高級進階篇)
- AIRIOT物聯網平臺開發框架應用與實戰
- HTML5秘籍(第2版)
- JavaScript程序設計(第2版)
- Everyday Data Structures
- Java并發編程之美
- Scala編程實戰