国产乱子伦高清露脸对白-国产精品欧美久久久久天天影视-国产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/c07a6819b9bdb2e76c8c9a6aef403f60.jpg

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

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

右轉90度,循環4次

upload/article/images/2021-01-13/4f21782b04273b44f0f2318a24d25704.jpg

右轉90度,順序執行

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

https://cdn.china-scratch.com/timg/190803/1320554T6-4.gif

循環結構效果

https://cdn.china-scratch.com/timg/190803/1320562302-5.gif

順序結構效果

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


02

解釋

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

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


03

延伸

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

https://cdn.china-scratch.com/timg/190803/13205A394-6.gif

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

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

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

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

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

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

upload/article/images/2021-01-13/43ce3f8d1fa0edba5ed3348e70c0f24c.jpg

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

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


upload/article/images/2021-01-13/8439fab17920933bc0cef91251b4abcf.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/190803/13205a339-13.gif

污漬擦除

upload/article/images/2021-01-13/091f0e8840847983bafcd52f555ec7de.jpg

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

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

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


06

應用2

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

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

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

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

upload/article/images/2021-01-13/061e1f23e186670498de7b208082c989.jpg

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

upload/article/images/2021-01-13/3f264b3cc2936d2016883ca9367fb4fb.jpg

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

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

預約試聽課

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

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

        日b视频免费观看| 欧在线一二三四区| 精品久久久久久久无码| 精品无码国产一区二区三区av| 青青草原国产在线视频| 天美星空大象mv在线观看视频| 日本丰满少妇xxxx| 成人免费aaa| 37pao成人国产永久免费视频| 国产女大学生av| 亚洲熟妇av一区二区三区| avav在线看| 亚洲欧美日本一区二区三区| 午夜免费福利视频在线观看| 国产九九在线观看| 红桃视频一区二区三区免费| 国产免费色视频| 日韩精品一区二区三区四| 日韩精品综合在线| 日本wwwcom| 亚洲一区二区蜜桃| 国内自拍第二页| 在线观看三级网站| 欧美 日本 亚洲| www.com操| 日本黄色的视频| 黄色a级三级三级三级| 99精品一级欧美片免费播放| 国产日韩亚洲欧美在线| 免费黄色福利视频| 日韩av加勒比| 久久精品香蕉视频| 400部精品国偷自产在线观看| 丁香六月激情网| 日韩av在线中文| 免费看又黄又无码的网站| 国产一区二区视频免费在线观看| 99视频在线免费| 国产91av视频在线观看| 欧美日韩不卡在线视频| 亚洲欧洲日本精品| 黄页免费在线观看视频| 国产女同无遮挡互慰高潮91| 日韩精品在线视频免费观看| 亚洲免费黄色录像| 不要播放器的av网站| 中文字幕色呦呦| 伊人影院综合在线| 蜜臀av午夜一区二区三区| 青少年xxxxx性开放hg| 天天爽夜夜爽一区二区三区| 日日摸日日碰夜夜爽无码| www.-级毛片线天内射视视| www.日日操| 国产女女做受ⅹxx高潮| 69sex久久精品国产麻豆| 国产人妻互换一区二区| 一路向西2在线观看| 日日碰狠狠躁久久躁婷婷| 2019日韩中文字幕mv| 伊人成人免费视频| 特级毛片在线免费观看| 99国产精品久久久久久| 亚洲久久中文字幕| 亚洲高清免费在线观看| 免费一级特黄录像| 欧美三级午夜理伦三级富婆| 欧美xxxxx在线视频| 能在线观看的av| 成年人在线看片| 九九热精品在线播放| 色免费在线视频| 超碰在线资源站| 日韩video| 欧美精品久久久久久久自慰 | www.av片| 毛片在线视频播放| 久久精品香蕉视频| 黄色在线视频网| 亚洲综合伊人久久| 久久久国内精品| 成 年 人 黄 色 大 片大 全| 久久久久久人妻一区二区三区| 你懂的av在线| 黄色片视频在线播放| 日韩av片专区| 轻点好疼好大好爽视频| 日韩网站在线免费观看| 国产精品亚洲二区在线观看| 九九九九九国产| 97中文字幕在线| av在线无限看| 国产一二三四区在线观看| 毛片在线播放视频| 老司机久久精品| 欧美在线一区视频| 精品综合久久久久| 日本福利视频一区| 亚洲欧美日本一区二区三区| 国内自拍中文字幕| 中文字幕欧美人妻精品一区| 中国 免费 av| 黄色一级免费大片| 日本人体一区二区| 红桃视频一区二区三区免费| 777久久久精品一区二区三区| 一区二区成人网| 久久久久久免费看| 小明看看成人免费视频| 日本三级免费网站| 激情五月六月婷婷| 亚洲精品综合在线观看| 99爱视频在线| 狠狠噜天天噜日日噜| jizz18女人| 国产精品视频黄色| 国产青青在线视频| 青青草视频在线视频| 色男人天堂av| 99九九99九九九99九他书对| 日韩精品免费播放| 国产av麻豆mag剧集| 欧美狂野激情性xxxx在线观| 亚洲综合123| 一级做a免费视频| 天堂av在线网站| 91n.com在线观看| 男人和女人啪啪网站| 欧美激情视频免费看| 91午夜在线观看| 成人精品视频在线播放| 天堂8在线天堂资源bt| 亚洲一区 在线播放| 伊人久久在线观看| 国产欧美精品aaaaaa片| 成人性生交视频免费观看| 91在线第一页| 日本黄色播放器| 91精品国产吴梦梦| 成人免费观看在线| 亚洲 欧美 日韩 国产综合 在线| 久久这里只有精品23| 国产亚洲欧美在线视频| 国产午夜伦鲁鲁| xxxx一级片| www.com污| 99久久久精品视频| 日本wwww视频| 亚洲人视频在线| 麻豆一区二区三区在线观看| 日本香蕉视频在线观看| 欧美色图另类小说| youjizzxxxx18| 黄色网址在线免费看| 国产 日韩 亚洲 欧美| 国产超级av在线| 小明看看成人免费视频| 日韩专区第三页| 国产成人亚洲精品无码h在线| www.久久91| 久无码久无码av无码| 九九热在线免费| 穿情趣内衣被c到高潮视频| 可以在线看的av网站| 亚洲欧美aaa| 成人毛片一区二区| 国产精品嫩草影视| 男人操女人免费软件| 九九精品久久久| 欧美一级爱爱视频| 亚洲免费黄色网| 免费看的黄色大片| 亚洲成人手机在线观看| 人妻熟妇乱又伦精品视频| 亚洲精品在线网址| 成年人免费大片| 国产在线播放观看| 久久观看最新视频| 国产精品自在自线| 九色91popny| 欧美日本视频在线观看| 小早川怜子一区二区三区| 免费黄色特级片| 成年人午夜视频在线观看| 亚洲天堂av一区二区| 男女h黄动漫啪啪无遮挡软件| www插插插无码免费视频网站| 中文字幕精品一区二区三区在线| 国语对白做受xxxxx在线中国| 成人av在线播放观看| 永久av免费在线观看| 欧美美女一级片| 亚洲人视频在线| 国产一区二区在线观看免费视频| 国产精品免费成人| 精品国产av无码一区二区三区| 手机在线视频一区| 最新黄色av网站| 色婷婷一区二区三区在线观看| 国产成人美女视频|