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

極客小將

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

資訊內容

控制Scratch異步代碼的執行順序

極客小將2020-12-22-
你是否在編寫項目時遇到過一些棘手的BUG,比如邏輯明明是通順的,但是執行結果卻不符預期。又如兩段代碼完完全全一模一樣,但是結果卻大相徑庭。這極有可能是代碼的執行順序沒有得到控制所導致的,這是一些初學者常常會遇到的問題。本文將分析這種代碼執行順序失控的原因及其應對方法。

你是否在編寫項目時遇到過一些棘手的BUG,比如邏輯明明是通順的,但是執行結果卻不符預期。又如兩段代碼完完全全一模一樣,但是結果卻大相徑庭。這極有可能是代碼的執行順序沒有得到控制所導致的,這是一些初學者常常會遇到的問題。本文將分析這種代碼執行順序失控的原因及其應對方法。


01

依照慣例,先來看幾個案例。

《恐龍吃蘋果》

upload/article/images/2020-12-22/a7b32814da27b25b6162a6dc694958e0.jpg

舞臺布局

upload/article/images/2020-12-22/12daf129fc2801c7dc71d206ad82bbe3.jpg

恐龍代碼

使用鍵盤方向鍵控制恐龍移動,點擊綠旗使恐龍回到起始位置,準備進行下一次游戲。

upload/article/images/2020-12-22/65c425e698433c1806b73a1f5ed150c5.jpg

蘋果代碼

判斷蘋果是否碰到恐龍,一旦碰到則隱藏,當綠旗被點擊時將蘋果切換至顯示狀態,準備進行下一次游戲。

案例很普通,代碼也普通得不能再普通了,都進行了初始化操作,甚至可以說代碼是比較規范的。那么來看一下實際運行效果。

https://cdn.china-scratch.com/timg/190912/122K0L42-3.gif

案例效果

注意到問題所在了嗎?在圖中,一共點擊了三次綠旗,第一次,啟動程序,控制恐龍移動,蘋果被恐龍吃掉-隱藏;第二次點擊綠旗,重啟程序,恐龍確實回到初始位置了,但是,明明設置了顯示狀態的初始化,蘋果卻并沒有出現。第三次點擊綠旗才出現。

問題是,為什么第二次點擊綠旗時,蘋果沒有按照預想的那樣,切換成顯示狀態呢?

在Scratch中遇到BUG時,有很多種調試方法,這次介紹一種變量法,通過變量來判斷某處代碼是否執行、執行次數。

upload/article/images/2020-12-22/ec27d614060562315c729793cd8df4e9.jpg

新建變量“score”,在蘋果代碼中增加【將(score)增加(1)】

為了調試BUG,因此在這里不對變量做初始化。

https://cdn.china-scratch.com/timg/190912/122K131H-5.gif

調試效果

變量score初始值為0,在第一次點擊綠旗,被恐龍吃掉后,score的值變為1,此時再次點擊綠旗重啟程序,恐龍回到初始位置,蘋果沒有顯示,而score的值此時變為2,說明畫圈處的代碼被執行了兩次。

upload/article/images/2020-12-22/3879f350587ac9d5000a5d0dd1c230ed.jpg

所以,蘋果并不是沒有顯示,而是顯示后再一次碰到恐龍,再次隱藏。唯一合理的解釋是,在第二次點擊綠旗時,蘋果的代碼被先執行了,而此時恐龍并沒有回到初始位置,因此蘋果再次碰到恐龍,再次隱藏。這時候再執行恐龍的代碼,恐龍回到初始位置,為時已晚,蘋果已經被恐龍“誤食”了。

在Scratch中,看似同時執行的代碼,實則是有先后順序的。兩段代碼沒有按照預想的先后順序執行,導致程序初始化時出現BUG。

很多初學者經常會遇到這樣的問題,有的程序點擊一次是無法正常運行的,第二次點擊才會正常。大多數情況其實和上文中展示的這個案例屬于同一種情況。如果再次遇到類似這樣的情況,就要好好考慮一下是不是由于沒有控制好代碼的先后執行順序而導致初始化BUG。


02

這個問題應該如何解決呢?既然是代碼執行順序不受控制,那么最簡單的方法就是通過【等待()秒】積木來調整順序。我們希望的是恐龍先“離開事發地點”,回到初始位置,再執行蘋果是否碰到恐龍的代碼,只需要在點擊綠旗后,等待一段短暫的時間再執行這段代碼即可。

upload/article/images/2020-12-22/4ddd3a0570a974727a3e09a6c698a192.jpg

至于等待的時間,設置成0.1還是0.01其實都可以,但是在這里我建議將數值設為0,即【等待(0)秒】。兩段當綠旗被點擊積木下的代碼的先后執行順序間隔非常短,等待0秒積木足以改變其順序。因為【等待()秒】積木會刷新屏幕,而刷新屏幕相對來說耗時較長(參見淺談Scratch的舞臺刷新機制 Part 2——在常規積木中的應用)。

https://cdn.china-scratch.com/timg/190912/122K22I2-8.gif

加入【等待(0)秒】后,蘋果初始化正常

這在我看來有兩點意義,一是副作用最小,我們的目的是控制程序運行的先后順序,但是如果等待的時間過久,會造成明顯的卡頓,因此在能保證代碼運行順序的前提下,時間越短越好。二是起到一種標志作用,這種特殊的用法我們不妨約定俗成地將其視作為解決這類BUG的標志,一旦看到這樣的用法,就知道是用來控制代碼執行順序的。

關于【等待(0)秒】還可以參照科技傳播坊疑難雜癥視頻 vol.41 《等待0秒的意義》。


03

BUG是解決了,但是在《恐龍吃蘋果》這個案例中,為什么是先執行蘋果的代碼再執行恐龍的代碼?而不是反過來呢?是什么決定了代碼的執行順序?

為了更直觀地表現代碼的執行順序,我們換一個更簡單的案例,通過變量來展現執行順序。

https://cdn.china-scratch.com/timg/190912/122K253S-9.gif

圖層順序對于異步代碼執行順序的影響

初始狀態下,橘貓的代碼是將變量設為0,圖層在后,藍貓的代碼是將變量設置為1,圖層在前。運行結果為0,表明藍貓的代碼先執行了,橘貓后執行,將變量覆蓋為0。

通過鼠標拖拽改變圖層順序,將橘貓圖層置于藍貓前面。運行結果為1,表明橘貓的代碼先執行了,藍貓后執行,將變量覆蓋為1。

通過實驗我們可以得出以下結論:

不同角色的異步代碼執行順序如下:角色圖層在前的先執行,圖層在后的后執行。

為排除鼠標拖拽可能產生的其他因素,通過代碼調整圖層順序,結論依舊成立。


04

盡管調整圖層順序是一種可控的、確定的能控制異步代碼執行順序的方法,但是編寫程序的我們不可能通過手動拖拽角色來控制代碼執行順序。萬一體驗者在非全屏模式下不小心拖拽了某個角色,改變了執行順序而導致BUG。代碼明明完全一樣,但就是無法正常運行,那將會是一件多么尷尬的事。(下次再遇到這樣的情況可以考慮一下是否是因為圖層順序影響了代碼執行順序,而又沒有很好地控制執行順序)

為控制代碼執行順序,上文中也提到了,可以使用【等待(0)秒】積木來解決,這種方法簡單直接,且對原代碼的改動最小,建議新手使用。

但是這是一種“把代碼寫死”的做法,在此給追求優質代碼的scratchers提供一種更完美的思路——消息,利用消息來控制代碼的執行順序。

upload/article/images/2020-12-22/49b28f99816a47e6357268f2e304513a.jpg

橘貓代碼

upload/article/images/2020-12-22/5b776b84ebe0611cd2faa1085b0891f8.jpg

藍貓代碼

upload/article/images/2020-12-22/76a783a7cce6f1144ec951d6ba5dbde4.jpg

通過【廣播()并等待】實現同步

upload/article/images/2020-12-22/067f0ec5ea37d41c0684e9e864c3fa4f.jpg

隨手畫的流程圖

控制代碼的執行順序,你學會了嗎?

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

預約試聽課

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

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

        国产91在线亚洲| 成年人黄色在线观看| 异国色恋浪漫潭| 国产黄色激情视频| 久久婷婷国产91天堂综合精品| 亚洲美免无码中文字幕在线 | 国产四区在线观看| 成人高清在线观看视频| 亚洲综合婷婷久久| 天天色综合天天色| 免费黄频在线观看| av不卡在线免费观看| 99爱视频在线| 色欲av无码一区二区人妻| 妞干网在线免费视频| 天天看片天天操| 免费成人深夜夜行网站视频| 久久婷婷国产91天堂综合精品| 国产一级黄色录像片| 免费毛片网站在线观看| 波多野结衣天堂| av天堂永久资源网| 成人午夜视频在线观看免费| 熟妇人妻va精品中文字幕| 潘金莲激情呻吟欲求不满视频| 大陆极品少妇内射aaaaa| 国产无限制自拍| 免费的一级黄色片| 加勒比海盗1在线观看免费国语版| 男人添女人荫蒂免费视频| www.欧美日本| 国产又大又硬又粗| 中文字幕在线导航| 欧美精品aaaa| 在线观看国产中文字幕| 久久久999免费视频| 2018日日夜夜| 日韩欧美在线播放视频| 免费日韩中文字幕| 熟女性饥渴一区二区三区| 黄色成人在线看| 亚洲成熟丰满熟妇高潮xxxxx| 热久久精品国产| 性刺激的欧美三级视频| 亚洲天堂网站在线| 久久久国内精品| 免费黄色日本网站| 中文字幕第80页| 一级片免费在线观看视频| 国产精品99久久久久久大便| 国产日韩视频在线播放| 国产精品va在线观看无码| 国产原创中文在线观看| 欧美性猛交xxx乱久交| 三级一区二区三区| 男人天堂手机在线视频| 久久精品香蕉视频| 天天干天天操天天做| 分分操这里只有精品| 久久国产精品国产精品| 农民人伦一区二区三区| 色免费在线视频| 国产毛片久久久久久国产毛片| 久久人人爽人人爽人人av| 看欧美ab黄色大片视频免费 | 亚洲欧美自拍另类日韩| 欧美无砖专区免费| 久久久国产欧美| 18禁裸男晨勃露j毛免费观看| 女人另类性混交zo| 无码人妻精品一区二区三区99v| 日韩在线第三页| 91免费国产精品| 亚洲精品综合在线观看| 欧美视频免费看欧美视频| 天堂av8在线| 国产精品无码av无码| 福利视频一二区| 精品国产无码在线| 国产成人黄色网址| 日本在线观看a| 麻豆tv在线播放| 777久久精品一区二区三区无码 | 久久精品免费网站| 狠狠爱免费视频| 黄色一级片在线看| 日本aa在线观看| 免费看啪啪网站| 色天使在线观看| 久久久久久久片| 免费看a级黄色片| 免费国产成人av| 日韩一级免费在线观看| 男女午夜激情视频| 无码aⅴ精品一区二区三区浪潮 | 中文字幕亚洲欧洲| 天天视频天天爽| 小泽玛利亚视频在线观看| 欧美日韩在线不卡视频| 国产成人久久婷婷精品流白浆| 国产免费黄色一级片| 日韩日韩日韩日韩日韩| 国产美女主播在线| 欧美 日韩 国产 高清| 久久久亚洲精品无码| 欧美在线观看www| 丰满少妇被猛烈进入高清播放| 国产超级av在线| 成人在线观看a| 免费激情视频在线观看| 欧美成人黄色网址| 精品亚洲一区二区三区四区| 色天使在线观看| 中文字幕在线中文| 欧美日韩一道本| 激情综合网俺也去| 日日夜夜精品视频免费观看| 18视频在线观看娇喘| 成人性生活视频免费看| 女人和拘做爰正片视频| 黄色永久免费网站| 日本三日本三级少妇三级66| 日本欧美视频在线观看| www.日本xxxx| 韩国黄色一级大片| 免费黄色日本网站| 可以看污的网站| 黄页网站在线观看视频| 美女在线视频一区二区| 国产精品入口芒果| 久久撸在线视频| 亚洲精品蜜桃久久久久久| 欧美精品性生活| 国产日本欧美在线| 成年人小视频网站| 激情图片qvod| 五月婷婷六月合| 国产主播自拍av| 无人在线观看的免费高清视频| 老汉色影院首页| 伊人国产在线视频| 三上悠亚久久精品| 五月天婷婷在线观看视频| 波多野结衣乳巨码无在线| 污色网站在线观看| 欧洲av无码放荡人妇网站| 在线观看污视频| 亚洲视频第二页| 虎白女粉嫩尤物福利视频| 国产精品8888| 国产探花在线观看视频| 密臀av一区二区三区| 免费av观看网址| 黄色特一级视频| 亚洲第一精品区| 日韩av片免费观看| 九色91popny| www.亚洲天堂网| 免费看的黄色大片| av在线播放亚洲| 无码人妻精品一区二区蜜桃网站| 青娱乐国产精品视频| 想看黄色一级片| 亚洲黄色av片| 99国产精品久久久久久| 国内外成人免费在线视频| 国产免费视频传媒| 97公开免费视频| 国内自拍视频一区| 五月婷婷激情久久| 美女黄色片视频| 污污网站免费观看| 亚洲黄色片免费| 91香蕉国产线在线观看| jizzzz日本| 性欧美18一19内谢| 国产农村妇女精品久久| 免费在线观看污污视频| 国产日本欧美在线| 4444亚洲人成无码网在线观看| 成人精品视频在线播放| 少妇无码av无码专区在线观看 | 福利视频一区二区三区四区| 日韩网站在线免费观看| 两根大肉大捧一进一出好爽视频| 91成人在线观看喷潮教学| 青青草原av在线播放| 99视频精品免费| 国产精品999.| 青青草视频在线视频| 国产精品无码av在线播放| 日本888xxxx| 香蕉视频xxx| 欧美精品久久久久久久自慰| 午夜肉伦伦影院| 国产精品自在自线| 免费看欧美一级片| 欧美性久久久久| 亚洲一区二区在线视频观看| 激情视频小说图片|