国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

極客小將

您現在的位置是:首頁 » scratch編程資訊

資訊內容

淺談Scratch的舞臺刷新機制 Part 2——在常規積木中的應用

極客小將2021-01-13-
“?簡單來說,我們之所以能從各種屏幕上看到畫面的動態變化,都是由于屏幕在進行不斷地刷新——不斷地快速切換靜態的畫面,由于視覺暫留效應,給人產生畫面動態變化的“錯覺”。在Scratch中,可以通過舞臺觀察到角色的運動等動態效果,那么,Scratch的舞臺是

?簡單來說,我們之所以能從各種屏幕上看到畫面的動態變化,都是由于屏幕在進行不斷地刷新——不斷地快速切換靜態的畫面,由于視覺暫留效應,給人產生畫面動態變化的“錯覺”。在Scratch中,可以通過舞臺觀察到角色的運動等動態效果,那么,Scratch的舞臺是否也可以看做是一個小屏幕呢?本文將對于Scratch舞臺的刷新機制進行討論。

在淺談Scratch的舞臺刷新機制 Part 1——自制積木的不刷新屏幕功能一文中,介紹了“運行時不刷新屏幕”功能的原理及其應用。此外,關于舞臺的刷新機制,在一般積木中也有涉及,本文將會討論舞臺的刷新機制在一般積木中的應用及其實現原理。


01

案例演示

舞臺通過不斷刷新,才能讓用戶看到角色的變化,不論是運動也好,造型也罷,可以說舞臺刷新是Scratch重要的底層功能。那么除了“在運行時不刷新屏幕”還有哪些地方可以利用舞臺的刷新機制呢?或者說,關于舞臺的刷新機制還有哪些tips呢?別急,我們對于舞臺的刷新機制還不夠了解,先來思考一個問題。

upload/article/images/2021-01-13/7fad044b0e42bae156082e0aa5d80e1c.jpg

為什么【重復執行】配合【移動()步】積木可以實現角色在舞臺上移動的效果呢?為什么我們可以看到角色移動的過程呢?為什么角色不是“嗖”一下就從舞臺左側閃到舞臺右側呢?也許初學者會被這樣告知,是因為程序的執行有一個延遲時間,每次移動都會延遲一小會兒,這樣就能看到移動的過程了。那么這種說法是否正確呢?再來看兩段代碼吧https://cdn.china-scratch.com/Public/Home/images/grey.gif

upload/article/images/2021-01-13/043b9ea6532c6b1c21f2b22912d0b8ff.jpg

右轉90度,循環4次

upload/article/images/2021-01-13/ff75e0cae9f9ecb66a3042e6e2e6f796.jpg

右轉90度,順序執行

兩段代碼在邏輯上可以說是一樣的,他們的運行結果也是一樣的,那展示它們到底意義何在?

https://cdn.china-scratch.com/timg/190801/1334252D7-4.gif

循環結構效果

https://cdn.china-scratch.com/timg/190801/1334261502-5.gif

順序結構效果

盡管兩段代碼在邏輯上幾乎一致,結果也一模一樣,但是他們的運行過程有著天壤之別。在循環結構中,可以看到角色旋轉的過程,而在順序結構中,程序像是沒有執行。


02

解釋

結合上一篇中關于“運行時不刷新屏幕”功能的講解,對于這個現象應該并不陌生,也很好解釋,其實程序是執行了的,只是在執行時沒有刷新屏幕罷了,依次右轉四次,剛好是一周,又回到了原來的位置,盡管執行完畢后舞臺進行了一次刷新,但是“為時已晚”,看起來程序像是未曾運行過一般。

基于這兩種不同的現象,我的推論是,順序結構的代碼,在執行過程中,都不會刷新舞臺,只有在執行完最后一塊積木后,才會進行刷新;而循環結構的代碼,每一輪循環都會刷新一次舞臺,如循環結構中角色的旋轉效果,每執行完一次右轉的代碼,當輪循環結束,舞臺刷新一次,如此我們就會看到角色旋轉的過程了。循環結構不能單獨存在,循環結構中必然包含順序結構,所以本質還是順序結構執行完后對舞臺進行刷新。


03

延伸

在順序結構中,程序必然是只有執行完最后一塊積木才會刷新舞臺嗎?這種說法,可以說對,也可以說不對。

https://cdn.china-scratch.com/timg/190801/13342G055-6.gif

【等待()秒】積木對于順序結構中舞臺刷新的影響

即使是在順序結構中,代碼也不總是只有執行完最后一塊積木才刷新舞臺的,【等待()秒】積木可以打破這種順序結構中不刷新屏幕的默契,強行使其刷新,類似地,其他還有【等待()】(條件成立)積木、【說()()秒】積木、【思考()()秒】積木,凡是會使程序進入“阻塞”狀態的積木,都會使屏幕刷新。寫到這里我忽然恍然大悟,對于舞臺刷新的認識,更加證實了我之前對于【等待()】(條件成立)積木的認識,也就是在2.0中我們熟悉的【在()之前一直等待】積木。篇幅有限,亦不是主題,直接上結論:【等待()】(條件成立)積木的本質就是【重復執行直到()】積木的變形。

upload/article/images/2021-01-13/d4f12ca1455ea081b2ead8ca6e5bb9bf.jpg

upload/article/images/2021-01-13/72ce2b785c897c6b69f818351f90f732.jpg

【等待】的本質是循環執行一段空的代碼,直到條件成立,跳出循環

如圖所示兩段代碼首先在效果上是完全等價的,其次表現也是完全一樣的。在Scratch中,只有正在執行的代碼才出現高亮黃色邊緣,三種循環如此,各種等待積木亦是如此。因此【等待】積木的本質是循環執行一段空的代碼,直到條件成立,跳出循環。現在又多了一條理由:循環結構的代碼才會在程序執行過程中不斷刷新屏幕,【等待】積木會在順序結構中強制刷新屏幕,因此【等待】的本質就是循環。還可以推斷出如下結論:

upload/article/images/2021-01-13/d32f48008ce39132ab4b26da0897a565.jpg

upload/article/images/2021-01-13/44dacbb4a85481cf87c970f2eac4d3c8.jpg

【等待()秒】的本質也是等待條件成立,只不過在這里條件是時間


upload/article/images/2021-01-13/e9249bf41b375fd75f9fef9eb8e9d607.jpg

【等待()秒】也可以看做是一種循環

回到我們的主題——舞臺刷新,為何那些使程序進入阻塞狀態的積木,如等待()秒,也可以使舞臺刷新,現在看來似乎是理所應當的了,因為他們的本質都是循環。

至于【重復執行】配合【移動()步】積木可以讓用戶看到角色在舞臺上移動的過程,其原因確實是由于循環結構導致的,每移動一次,完成一輪循環,舞臺就刷新一次,周而復始,用戶就可以觀察到角色移動的過程了。


04

辟謠

至于延遲時間的說法,其實是由于在循環時,舞臺會被刷新,刷新舞臺才能看出移動的過程。而在刷新舞臺的過程中,有一個附贈品——時間的消耗,刷新舞臺需要消耗一定的計算資源,計算機在執行更底層的舞臺重繪時需要花費一定的時間。這僅僅是舞臺刷新的一個附贈品,而舞臺刷新的真正任務是使用戶觀測到角色的運動過程,因此那些關于積木內部延遲時間的討論并無意義,其實測算出來的是舞臺刷新所需的時間。就如A直接產生B現象,A又順帶產生了C現象,人們觀測到了C現象,就直接下定論說是C導致B。這是一種人們在探索未知領域中常犯的錯誤,也許本文所討論的、得出的結論亦是一種類似這樣的錯誤也說不定呢?https://cdn.china-scratch.com/Public/Home/images/grey.gif


05

應用1

總結了這么多看似沒有實際用處的推論,總該寫一些具有使用價值的東西了吧?

https://cdn.china-scratch.com/timg/190801/1334302260-13.gif

污漬擦除

upload/article/images/2021-01-13/7ea5344fad06bcc0ab6c2f2edf5d573c.jpg

抹布角色帶有一個和背景顏色相同的純色塊造型

upload/article/images/2021-01-13/8015a4e06185ced3abbe7a9516f6c2c2.jpg

根據上文得出的結論,順序結構不刷新舞臺,因此切換成純色塊造型時,舞臺是沒有刷新的,用戶也是看不到效果的。在執行完移到鼠標時針和圖章的代碼后,舞臺依舊沒有刷新,最后切換回抹布造型,這時候順序結構執行完畢,刷新舞臺,用戶只能看到最終的造型——抹布,而看不到之前的造型切換過程。而在執行圖章代碼時,在舞臺中留下的“印記”是“當前”造型,也就是純色塊,因此抹布能將純色涂抹在舞臺中,實現遮蓋住污漬的效果,而自身造型看起來不發生改變。


06

應用2

接下來介紹另一個關于舞臺刷新的應用技巧——碰撞塊

在制作案例時,尤其是一些游戲類的案例,常常會用到碰撞偵測,在角色碰到其他對象時,通過后續代碼控制其相應的行為。而角色往往又不是一些常規的幾何圖形,邊緣不光整,所以在碰撞偵測時會產生穿墻BUG,面對這種情況,我們可以使用一種我稱之為碰撞塊的技巧。以坦克對戰為例:

upload/article/images/2021-01-13/1063e528ace671c6e80c86896c99b236.jpg

在控制坦克移動時,一旦碰到墻壁,則后退一定距離,但是由于坦克是個不規則圖形,往往在實際操作中會倒退進墻壁內部從而產生穿墻BUG

upload/article/images/2021-01-13/9edd69ce1e4564b856baacb6e2b44c99.jpg

解決方法是給坦克創建一個邊緣規則的“碰撞塊”造型

upload/article/images/2021-01-13/199ee299d5bbb1dec724de7bf45d69c4.jpg

在執行碰撞偵測等代碼之前,先切換成碰撞塊造型,在最后將造型切換回坦克造型即可。此時在用戶眼前呈現的始終是坦克的造型,而在執行中間的代碼時卻是以碰撞塊造型去進行碰撞偵測的,不會產生穿墻BUG


在了解了舞臺刷新機制及其應用技巧后,別忘記額外的小收獲:Scratch中所有的“等待”,也許其實都是由循環模擬出來的。

聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除

預約試聽課

已有385人預約都是免費的,你也試試吧...

国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产91视频一区-亚洲欧美日产综合在线网-黄视频网站在线看-国产欧美亚洲精品第1页-亚洲www在线-大学生女人三级在线播放-日本在线视频www鲁啊鲁-国产成人精品一区二区仙踪林-69精品欧美一区二区三区-成人欧美亚洲-日本污污网站-中国妞xxxhd露脸偷拍视频-国产精品aⅴ在线观看-精品中文字幕在线

        交换做爰国语对白| 日韩 欧美 自拍| 日本黄色片一级片| 欧美精品色视频| 五月激情五月婷婷| 中国黄色片一级| 最新天堂中文在线| 天堂av8在线| 在线免费黄色小视频| 亚洲欧美日韩不卡| 国产日韩欧美大片| 国产免费黄色一级片| 日韩av新片网| 青青在线视频观看| 性生生活大片免费看视频| 在线免费看v片| 亚洲国产一二三精品无码| 99热亚洲精品| 欧美丰满熟妇xxxxx| 中文字幕国产免费| 91国在线高清视频| 国产欧美在线一区| 中文字幕永久有效| 7777在线视频| 亚洲中文字幕无码不卡电影| 日本人视频jizz页码69| 热这里只有精品| 国产黄色一级网站| 91人人澡人人爽人人精品| 最新天堂中文在线| 国产美女永久无遮挡| 欧美日韩第二页| 国产一级免费大片| 99精品在线免费视频| 色啦啦av综合| 日本手机在线视频| 亚洲精品手机在线观看| 免费毛片小视频| 18视频在线观看娇喘| 国产三级三级三级看三级| 黄网站色视频免费观看| 色婷婷狠狠18| 黄色av网址在线播放| 手机在线观看日韩av| 久久精品视频91| 妞干网在线视频观看| 中国 免费 av| www.偷拍.com| www.久久av.com| 激情婷婷综合网| 欧美黑人经典片免费观看| 1314成人网| 午夜免费福利网站| 浓精h攵女乱爱av| 久久久久久久久久久福利| 香蕉视频免费版| 性做爰过程免费播放| 玖玖爱视频在线| 欧美伦理片在线观看| 男女污污的视频| 成人一区二区三| 国内自拍视频一区| aa免费在线观看| 人妻内射一区二区在线视频| 97超碰国产精品| 日韩一级片免费视频| 97在线免费视频观看| www.九色.com| 久久久久久久香蕉| 人人妻人人添人人爽欧美一区| 青青草免费在线视频观看| 日韩第一页在线观看| www.国产亚洲| 极品粉嫩国产18尤物| 黄色成人在线看| 九九九九免费视频| 第四色婷婷基地| 婷婷中文字幕在线观看| 欧美日韩dvd| 日日橹狠狠爱欧美超碰| 老司机午夜av| 黄瓜视频免费观看在线观看www | 五月婷婷丁香综合网| 伊人国产精品视频| 久久久国内精品| 97在线免费公开视频| 嫩草视频免费在线观看| xxxxxx在线观看| aa在线免费观看| 人人妻人人澡人人爽精品欧美一区| 最新黄色av网站| 日本韩国欧美在线观看| 奇米视频888| 草草视频在线免费观看| 免费看黄色一级大片| 国产人妻人伦精品| 天天碰免费视频| 亚洲第一综合网站| 国产精品乱码久久久久| 男人c女人视频| 激情婷婷综合网| 国产精品自拍合集| 中文字幕第38页| 波多野结衣 作品| 天堂av8在线| 无码人妻丰满熟妇区五十路百度| 国产奶头好大揉着好爽视频| www.日日操| 国产特级黄色大片| 精品国产一区二区三区在线| 岛国av在线免费| 亚洲欧美另类动漫| 欧洲av无码放荡人妇网站| 久青草视频在线播放| 久久久精品高清| 黄色片一级视频| 日韩在线观看a| av久久久久久| 特级西西人体www高清大胆| 特级丰满少妇一级| 免费看污污网站| 热久久精品免费视频| 欧美日韩中文在线视频| 青青草成人免费在线视频| 在线观看17c| 天天在线免费视频| ijzzijzzij亚洲大全| 婷婷激情小说网| 亚洲激情在线看| 91精品国产三级| 国产一级片中文字幕| 黄色小视频免费网站| 911福利视频| 99热这里只有精品7| 奇米777在线| 黄网站色视频免费观看| 成人免费看片'免费看| 男人的天堂avav| 欧美日韩在线中文| 国产免费999| 久久6免费视频| 在线视频一二三区| 欧美不卡在线播放| 免费看a级黄色片| 亚洲精品久久久久久宅男| 欧美成人乱码一二三四区免费| 永久av免费在线观看| 亚洲国产成人精品无码区99| 五十路熟女丰满大屁股| 国产1区2区在线| 亚洲一区二区中文字幕在线观看| 狠狠噜天天噜日日噜| 欧美一级片中文字幕| 久久久精品高清| 又大又硬又爽免费视频| 激情网站五月天| 特级毛片在线免费观看| 日韩欧美一区二| 中文字幕剧情在线观看| 男人插女人视频在线观看| 久久久久国产精品熟女影院| 黄色小视频免费网站| 日日橹狠狠爱欧美超碰| www,av在线| 黑鬼大战白妞高潮喷白浆| 超碰97免费观看| 熟女少妇精品一区二区| 一二三四中文字幕| xxww在线观看| 国产a视频免费观看| 国产毛片久久久久久国产毛片| 色综合天天色综合| 天天夜碰日日摸日日澡性色av| 国产三级国产精品国产专区50| 国产乱人伦精品一区二区三区| 已婚少妇美妙人妻系列| 日韩欧美不卡在线| 视频一区二区视频| 亚洲黄色av片| 天天插天天操天天射| 116极品美女午夜一级| 狠狠干视频网站| a级网站在线观看| 天天爽夜夜爽一区二区三区| 免费看又黄又无码的网站| 日韩最新中文字幕| 91亚洲精品久久久蜜桃借种| 婷婷丁香激情网| 欧美牲交a欧美牲交aⅴ免费真| 日本黄色片一级片| 轻点好疼好大好爽视频| 四虎免费在线观看视频| 污污视频在线免费| 国产农村妇女精品久久| 在线观看中文av| 欧美h视频在线观看| 国产91av视频在线观看| 国产欧美精品一二三| 激情久久综合网| 手机av在线网站|