竹内纱里奈和大战黑人_欧美成人黄色小视频_91福利影视_欧美在线观看视频网站_h色网站免费观看_97综合

極客小將

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

資訊內(nèi)容

淺談Scratch的舞臺(tái)刷新機(jī)制 Part 3——隱藏對(duì)象與加速模式

極客小將2021-01-11-
“?順序結(jié)構(gòu)的代碼,在執(zhí)行過(guò)程中,都不會(huì)刷新舞臺(tái),只有在執(zhí)行完最后一塊積木后,才會(huì)進(jìn)行刷新;而循環(huán)結(jié)構(gòu)的代碼,每一輪循環(huán)都會(huì)刷新一次舞臺(tái),如循環(huán)結(jié)構(gòu)中角色的旋轉(zhuǎn)效果,每執(zhí)行完一次右轉(zhuǎn)的代碼,當(dāng)輪循環(huán)結(jié)束,舞臺(tái)刷新一次,如此我們就會(huì)看到角色旋轉(zhuǎn)的過(guò)程了。循

?順序結(jié)構(gòu)的代碼,在執(zhí)行過(guò)程中,都不會(huì)刷新舞臺(tái),只有在執(zhí)行完最后一塊積木后,才會(huì)進(jìn)行刷新;而循環(huán)結(jié)構(gòu)的代碼,每一輪循環(huán)都會(huì)刷新一次舞臺(tái),如循環(huán)結(jié)構(gòu)中角色的旋轉(zhuǎn)效果,每執(zhí)行完一次右轉(zhuǎn)的代碼,當(dāng)輪循環(huán)結(jié)束,舞臺(tái)刷新一次,如此我們就會(huì)看到角色旋轉(zhuǎn)的過(guò)程了。循環(huán)結(jié)構(gòu)不能單獨(dú)存在,循環(huán)結(jié)構(gòu)中必然包含順序結(jié)構(gòu),所以本質(zhì)還是順序結(jié)構(gòu)執(zhí)行完后對(duì)舞臺(tái)進(jìn)行刷新。

在《淺談Scratch的舞臺(tái)刷新機(jī)制 Part 1——自制積木的不刷新屏幕功能》一文中,介紹了“運(yùn)行時(shí)不刷新屏幕”功能的原理及其應(yīng)用;在《淺談Scratch的舞臺(tái)刷新機(jī)制 Part 2——在常規(guī)積木中的應(yīng)用》介紹了順序結(jié)構(gòu)的代碼和循環(huán)結(jié)構(gòu)代碼對(duì)于舞臺(tái)刷新的處理,以及Scratch中阻塞狀態(tài)的本質(zhì)。本文將會(huì)介紹Scratch中隱藏對(duì)象的舞臺(tái)刷新方式與加速模式。


01

情景復(fù)現(xiàn)

通過(guò)之前兩篇文章,對(duì)于在不同情況下舞臺(tái)的刷新機(jī)制都已經(jīng)有了一定的了解。但是還有一種情況我們尚未討論。舞臺(tái)刷新的目的是為了讓用戶觀察到程序運(yùn)行的效果及其過(guò)程,試想一下,如果一個(gè)角色本身就是看不見(jiàn)的,那舞臺(tái)還需要去大費(fèi)周章地刷新嗎?先來(lái)看一個(gè)實(shí)例

代碼:

upload/article/images/2021-01-11/78da17aa9e0a154730c37d6b1031411c.jpg

可見(jiàn)的角色在緩慢移動(dòng)的過(guò)程中先隱藏再顯示

https://cdn.china-scratch.com/timg/190803/13213364a-1.gif

小貓“閃現(xiàn)”

角色在顯示狀態(tài)下,執(zhí)行循環(huán)結(jié)構(gòu)中的移動(dòng)代碼時(shí),不斷刷新屏幕,因此可以看到角色移動(dòng)的過(guò)程,且移動(dòng)速度較緩慢。角色切換至隱藏狀態(tài)后,同樣的代碼瞬間就執(zhí)行完畢,造成瞬移、閃現(xiàn)的效果。結(jié)合《淺談Scratch的舞臺(tái)刷新機(jī)制 Part 2——在常規(guī)積木中的應(yīng)用》中關(guān)于舞臺(tái)重繪需要消耗時(shí)間的說(shuō)法,可以推測(cè),角色之所以閃現(xiàn)、代碼之所以執(zhí)行效率如此之高,是因?yàn)槊馊チ宋枧_(tái)刷新的步驟,也就是說(shuō),隱藏的角色是不會(huì)刷新舞臺(tái)的


02

應(yīng)用

這個(gè)特性的發(fā)現(xiàn)具體有什么用呢?可以加快局部對(duì)象的程序執(zhí)行效率,使用起來(lái)比“運(yùn)行時(shí)不刷新屏幕”功能更方便一些,且不局限于角色。以2.0中的冒泡排序?yàn)槔?

代碼:

upload/article/images/2021-01-11/48ed455277d68378e612e17edc53b053.jpg

主程序,插入20個(gè)隨機(jī)數(shù),等待空格按下開(kāi)始排序,并計(jì)時(shí)

upload/article/images/2021-01-11/735134e23c58ccd21bae1e4f3d90021b.jpg

冒泡排序

運(yùn)行過(guò)程:

https://cdn.china-scratch.com/timg/190803/132135BM-4.gif

排序過(guò)程

運(yùn)行結(jié)果:

upload/article/images/2021-01-11/17c483ec9c58681097c049e890f7804e.jpg

對(duì)20個(gè)數(shù)字進(jìn)行排序用時(shí)6.396秒

由于列表顯示器位于舞臺(tái)中,在2.0中也需要通過(guò)舞臺(tái)的刷新來(lái)展示其變化,所以https://cdn.china-scratch.com/Public/Home/images/grey.gif

https://cdn.china-scratch.com/timg/190803/13213M403-7.gif

在函數(shù)Buble Sort中,在開(kāi)頭加上【隱藏列表】,在末尾加上【顯示列表】

upload/article/images/2021-01-11/32f77d04b17adbbf82c9ea3a36136dbe.jpg

對(duì)20個(gè)數(shù)字進(jìn)行排序時(shí),隱藏列表,用時(shí)0秒

自信地將樣本容量擴(kuò)大,嘗試對(duì)100個(gè)數(shù)進(jìn)行排序。

https://cdn.china-scratch.com/timg/190803/13213952Q-9.gif

100個(gè)數(shù)字的冒泡排序依然在非常短的時(shí)間內(nèi)完成,而在列表不隱藏時(shí)對(duì)100個(gè)數(shù)進(jìn)行排序,耗時(shí)將達(dá)到40秒左右。看來(lái)舞臺(tái)刷新消耗的計(jì)算機(jī)資源還真不小。

本案例使用2.0進(jìn)行測(cè)試的原因是,3.0中即使列表處于顯示狀態(tài),也不會(huì)刷新舞臺(tái),無(wú)論顯示還是隱藏,對(duì)1000個(gè)數(shù)進(jìn)行冒泡排序的耗時(shí)都在3~5秒這個(gè)量級(jí)。所以在2.0的項(xiàng)目中,可以通過(guò)將列表隱藏來(lái)加快和列表相關(guān)代碼的執(zhí)行效率


03

加速模式

加速模式可以通過(guò)工具欄開(kāi)啟/關(guān)閉,也可以通過(guò)SHIFT+鼠標(biāo)左鍵單擊綠旗按鈕來(lái)開(kāi)啟。

代碼:

upload/article/images/2021-01-11/d407a6afe87f4c148d54ed1eebb58568.jpg

通過(guò)變量count計(jì)算循環(huán)次數(shù),數(shù)值變化越快表明程序運(yùn)行速度越快

加速模式效果

https://cdn.china-scratch.com/timg/190803/1321405032-11.gif

開(kāi)啟加速模式后count數(shù)值飛快增長(zhǎng)

加速模式開(kāi)啟后可以大幅加快程序運(yùn)行效率,結(jié)合之前不刷新屏幕相關(guān)效果,我對(duì)于加速模式的推論是:如果是完全的不刷新屏幕,我們是無(wú)法看到角色移動(dòng)的,而在加速模式下也能看到角色移動(dòng),只不過(guò)是以瞬間移動(dòng)的形式,所以加速模式的本質(zhì)是減少屏幕刷新次數(shù)從原先的每1輪循環(huán)都刷新1次屏幕,加速至比如每100輪循環(huán)才刷新1次屏幕這部分內(nèi)容僅僅是推論,有待商榷


04

加速模式的應(yīng)用

加速模式可以應(yīng)用在一些計(jì)算量特別大的案例中,以《蒙特卡羅方法》為例。

upload/article/images/2021-01-11/ccdf8ac6ccb04bf2bf20c313d45d2b17.jpg

蒙特卡羅方法(Monte Carlo method),也稱(chēng)統(tǒng)計(jì)模擬方法,是二十世紀(jì)四十年代中期由于科學(xué)技術(shù)的發(fā)展和電子計(jì)算機(jī)的發(fā)明,而被提出的一種以概率統(tǒng)計(jì)理論為指導(dǎo)的一類(lèi)非常重要的數(shù)值計(jì)算方法。是指使用隨機(jī)數(shù)(或更常見(jiàn)的偽隨機(jī)數(shù))來(lái)解決很多計(jì)算問(wèn)題的方法。與它對(duì)應(yīng)的是確定性算法。蒙特·卡羅方法在金融工程學(xué),宏觀經(jīng)濟(jì)學(xué),計(jì)算物理學(xué)(如粒子輸運(yùn)計(jì)算、量子熱力學(xué)計(jì)算、空氣動(dòng)力學(xué)計(jì)算)等領(lǐng)域應(yīng)用廣泛。

在本案例中用來(lái)計(jì)算圓周率。通過(guò)往一定范圍內(nèi)進(jìn)行大量地隨機(jī)投點(diǎn)(這個(gè)范圍是圓的外接正方形),統(tǒng)計(jì)落在圓的范圍內(nèi)的點(diǎn)數(shù),來(lái)計(jì)算出圓周率的近似值。由于投放數(shù)量十分龐大,所以需要使用加速模式。

https://cdn.china-scratch.com/timg/190803/1321421309-13.gif

在加速模式下利用蒙特卡羅方法進(jìn)行10萬(wàn)次投點(diǎn)實(shí)驗(yàn),落在圓內(nèi)的數(shù)量為77480,圓周率近似值為3.0992

盡管這種統(tǒng)計(jì)模擬方法計(jì)算圓周率精度較低,但是其蘊(yùn)含的思想還是值得品鑒的。


至此,Scratch中關(guān)于的舞臺(tái)刷新機(jī)制的剖析告一段落。希望本文也能“刷新”各位Scratchers的認(rèn)知,起到一定的幫助。如果對(duì)于舞臺(tái)刷新機(jī)制你也有相同或者不同的見(jiàn)解,歡迎在Scratch格物堂留言。

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

預(yù)約試聽(tīng)課

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

主站蜘蛛池模板: 成人精品视频在线观看 | 色五月激情综合网 | 成人午夜在线视频 | 久久综合九九 | 日本欧美在线 | 99国产一区| 激情欧美日韩一区二区 | 一区二区三区四区日韩 | 精品亚洲一区二区三区 | 婷婷丁香六月天 | www.免费av| 国产91成人在在线播放 | 精品一区二区久久久久久久网站 | 性一级毛片 | 亚洲视频在线观看 | 圆产精品久久久久久久久久久 | 午夜影院免费 | 国产精品a久久久久 | 性色av一区二区三区 | 狠狠综合久久 | 欧美日韩国产二区 | 岛国视频在线 | 自拍偷拍视频网站 | 亚洲国产一区在线 | 国产精品国产三级国产aⅴ原创 | 日韩精品一区二区三区在线 | 国产一区av在线 | 亚洲自拍小视频 | 国产精品一区av | 免费成人黄色网 | 日韩一区二区在线视频 | 免费在线观看一区 | 亚洲欧美一区二区三区情侣bbw | 欧美日韩亚洲国产综合 | 日韩免费精品 | 不卡在线一区 | 一级免费视频 | 天堂色区 | 久久亚洲国产视频 | 成人一级毛片 | 在线日韩中文字幕 |