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

極客小將

您現(xiàn)在的位置是:首頁 » scratch編程資訊

資訊內(nèi)容

控制Scratch異步代碼的執(zhí)行順序

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

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


01

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

《恐龍吃蘋果》

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

舞臺布局

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

恐龍代碼

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

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

蘋果代碼

判斷蘋果是否碰到恐龍,一旦碰到則隱藏,當(dāng)綠旗被點擊時將蘋果切換至顯示狀態(tài),準(zhǔn)備進行下一次游戲。

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

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

案例效果

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

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

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

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

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

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

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

調(diào)試效果

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

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

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

在Scratch中,看似同時執(zhí)行的代碼,實則是有先后順序的。兩段代碼沒有按照預(yù)想的先后順序執(zhí)行,導(dǎo)致程序初始化時出現(xiàn)BUG。

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


02

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

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

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

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

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

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

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


03

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

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

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

圖層順序?qū)τ诋惒酱a執(zhí)行順序的影響

初始狀態(tài)下,橘貓的代碼是將變量設(shè)為0,圖層在后,藍貓的代碼是將變量設(shè)置為1,圖層在前。運行結(jié)果為0,表明藍貓的代碼先執(zhí)行了,橘貓后執(zhí)行,將變量覆蓋為0。

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

通過實驗我們可以得出以下結(jié)論:

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

為排除鼠標(biāo)拖拽可能產(chǎn)生的其他因素,通過代碼調(diào)整圖層順序,結(jié)論依舊成立。


04

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

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

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

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

橘貓代碼

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

藍貓代碼

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

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

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

隨手畫的流程圖

控制代碼的執(zhí)行順序,你學(xué)會了嗎?

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

預(yù)約試聽課

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

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

        欧美性久久久久| 91免费国产精品| 欧美一级黄色录像片| 成年人黄色片视频| 久操手机在线视频| 国产传媒免费观看| 国语对白做受xxxxx在线中国| 在线观看av的网址| 99999精品| 中文字幕亚洲影院| 亚洲少妇久久久| 少妇人妻互换不带套| 极品美女扒开粉嫩小泬| 性一交一乱一伧国产女士spa| 亚洲综合欧美在线| 午夜激情福利在线| 成人在线观看黄| 四虎永久在线精品无码视频| av免费观看网| 国产精品后入内射日本在线观看| 今天免费高清在线观看国语| 熟女熟妇伦久久影院毛片一区二区| www.色就是色| 中文字幕 91| av噜噜在线观看| 天天操夜夜操很很操| 国产高清精品软男同| japanese在线视频| 一本二本三本亚洲码| 青娱乐国产精品视频| 7777在线视频| 成人性生活视频免费看| 青青青免费在线| 欧洲熟妇精品视频| 超碰人人草人人| 欧美aaa在线观看| 一本之道在线视频| 国产一区二区三区乱码| 国产在线精品91| 91福利国产成人精品播放| 中文字幕 欧美日韩| 欧美h视频在线观看| 日韩一级免费看| 欧美日韩中文在线视频| 无需播放器的av| 天天综合五月天| 国产二区视频在线播放| 我看黄色一级片| 久久久天堂国产精品| aa在线观看视频| 色戒在线免费观看| 国产免费一区二区视频| 制服丝袜中文字幕第一页| 美女黄色片网站| 99热成人精品热久久66| 久久艹这里只有精品| av日韩一区二区三区| 9久久婷婷国产综合精品性色| 四虎永久免费网站| 人妻无码视频一区二区三区| 日本一级淫片演员| 丁香啪啪综合成人亚洲| 99精品视频网站| 成人性生生活性生交12| www.国产在线视频| 精品综合久久久久| 国产精品wwwww| 9191国产视频| 国产在线视频三区| 国产免费又粗又猛又爽| 大j8黑人w巨大888a片| 日韩欧美中文视频| 我看黄色一级片| 一本色道无码道dvd在线观看| 欧美xxxx吸乳| 亚洲一区二区图片| 亚洲精品性视频| 另类小说第一页| 欧在线一二三四区| 丁香啪啪综合成人亚洲| 国产黄色片免费在线观看| 永久免费看av| 免费观看黄色的网站| 波多野结衣国产精品| 国产嫩草在线观看| 青青在线视频观看| 国产精品涩涩涩视频网站| 黄色动漫在线免费看| 久久国产亚洲精品无码| 免费看黄在线看| 亚洲熟妇国产熟妇肥婆| www.国产在线播放| 日本a在线免费观看| 国产精品久久中文字幕| 欧美久久久久久久久久久久久| 国产美女在线一区| 欧美一级在线看| 日本熟妇人妻中出| 国产无遮挡猛进猛出免费软件| 色播五月激情五月| 97人人模人人爽人人澡| www.一区二区.com| 亚洲熟妇无码另类久久久| 久久美女福利视频| 亚洲最大综合网| 一级片免费在线观看视频| 粉嫩av一区二区三区天美传媒 | www激情五月| 国产精品视频一二三四区| 国产一二三在线视频| 欧美精品一区二区三区免费播放| 少妇高清精品毛片在线视频| 久久久精品高清| 97超碰在线人人| 热久久精品国产| 在线免费观看av网| www.xxx麻豆| av在线无限看| 日韩久久久久久久久久久久| 美女av免费在线观看| 欧美日韩精品区别| 日韩精品在线中文字幕| 亚洲欧美激情网| 欧美在线观看黄| 亚洲欧美视频二区| 日韩一级免费看| 五月天av在线播放| 男人添女荫道口图片| 色综合色综合色综合色综合| 真实国产乱子伦对白视频| 久久精品香蕉视频| 天天想你在线观看完整版电影免费| 日韩精品一区二区三区久久| 红桃视频一区二区三区免费| 凹凸国产熟女精品视频| 久久久成人精品一区二区三区| 成年人网站大全| www.av毛片| 黄色高清视频网站| 国产精品v日韩精品v在线观看| 加勒比成人在线| 国产欧美自拍视频| 超碰人人草人人| 国产97色在线 | 日韩| 成年人午夜视频在线观看| 99热一区二区三区| 天天干天天干天天干天天干天天干| 国产 日韩 欧美在线| 青青草综合在线| 欧美 另类 交| www.桃色.com| 97超碰成人在线| 狠狠躁狠狠躁视频专区| 国产aaa一级片| 日韩中文字幕三区| 欧美精品自拍视频| 蜜臀av色欲a片无码精品一区| 麻豆中文字幕在线观看| 污污视频网站在线| 日本网站在线看| 色撸撸在线观看| 久久最新免费视频| 久久艹这里只有精品| 国产高清免费在线| 欧美xxxx吸乳| 欧日韩免费视频| 免费在线观看的av网站| 久久久精品在线视频| 激情视频综合网| 在线观看免费av网址| 日韩在线不卡一区| 国产农村妇女精品久久| 久久久久亚洲av无码专区喷水| 激情成人在线观看| 国产欧美123| 69sex久久精品国产麻豆| 亚洲不卡中文字幕无码| 凹凸国产熟女精品视频| 成人免费在线观看视频网站| 欧美成人乱码一二三四区免费| 成年人黄色在线观看| 18黄暴禁片在线观看| 黄色影院一级片| 国产精品拍拍拍| 激情五月五月婷婷| 免费黄色福利视频| av亚洲天堂网| 人妻互换免费中文字幕| 欧美日韩亚洲第一| 中文字幕一区二区在线观看视频 | 欧洲精品一区二区三区久久| 99999精品视频| 想看黄色一级片| 国产精品秘入口18禁麻豆免会员| av黄色在线网站| 一级黄色免费在线观看| 中国丰满人妻videoshd | 国产在线拍揄自揄拍无码| 免费国产a级片| 日本特黄在线观看|