資訊內(nèi)容
Scratch實(shí)現(xiàn)角色點(diǎn)擊的三種方式
Scratch實(shí)現(xiàn)角色點(diǎn)擊的三種方式
到目前為止,果凍老師和大家已經(jīng)學(xué)習(xí)了三位同學(xué)的參賽作品。古語說,溫故而知新,我們不但要學(xué)習(xí)了解新的知識,也要善于對知識進(jìn)行整理總結(jié)。這樣才能真正的理解掌握,這是一個(gè)編程高手必備的技能哦。
今天我們不學(xué)習(xí)新的作品,我們來總結(jié)一個(gè)非常常用的功能。果凍老師發(fā)現(xiàn)在前三個(gè)游戲作品中不可或缺的都有一個(gè)元素,那就是按鈕,比如《垃圾分類》中的PLAY和HELP按鈕,《時(shí)空穿越》中的A和B按鈕,《記憶碎片》中的三角形開始按鈕。既然每個(gè)作品中都有按鈕,那必須要實(shí)現(xiàn)的一個(gè)功能就是點(diǎn)擊按鈕。這篇文章果凍老師就向大家介紹點(diǎn)擊角色的三種實(shí)現(xiàn)方式。

直接拖拽法
第一種方法老師起名叫直接拖拽法,因?yàn)樵赟cratch軟件中就內(nèi)置了角色被點(diǎn)擊的事件語句:

我們將它直接拖動到代碼區(qū)就可以了,例如:

這樣,當(dāng)我們使用鼠標(biāo)點(diǎn)擊小貓時(shí),它就會說話了。

這也太簡單了吧!有同學(xué)會說,那我每次需要點(diǎn)擊角色的時(shí)候只要把這個(gè)語句拖進(jìn)來就行了,這當(dāng)然可以實(shí)現(xiàn)想要的功能,但是這個(gè)功能是開發(fā)Scratch軟件的叔叔阿姨替我們寫好了,我們知道怎么用,但是卻不知道是如何實(shí)現(xiàn)的,作為立志成為編程高手的你只會拖拽使用可是不行的,還必須自己編寫程序?qū)崿F(xiàn),最后你編寫的代碼封裝起來要讓其它小朋友拖拽使用,這樣你就成為同學(xué)們眼中的編程大神啦!
好,那我們就看看怎么樣用代碼來做出點(diǎn)擊角色的功能。

偵測語句法
在Scratch的偵測模塊中,有一個(gè)碰到鼠標(biāo)指針?的語句:
![]()
它的作用是判斷角色是否正在觸碰鼠標(biāo)指針,也就是說當(dāng)鼠標(biāo)指針放在角色上時(shí)就會觸發(fā)這個(gè)偵測。
在偵測模塊中還有一個(gè)語句,叫做按下鼠標(biāo)?
![]()
這個(gè)語句的作用是判斷是否按下了鼠標(biāo)的按鍵,我們用鼠標(biāo)點(diǎn)擊舞臺區(qū)的任何一個(gè)地方就會觸發(fā)這個(gè)偵測。
那如果我們將這兩個(gè)偵測語句放到一起聯(lián)合使用是什么效果呢?判斷鼠標(biāo)指針是否放在角色上并且是否按下了鼠標(biāo)的按鍵,這不就是我們想要的判斷角色被點(diǎn)擊的功能嗎?于是,我們的代碼就可以這樣寫:

將碰到鼠標(biāo)指針?和按下鼠標(biāo)?兩個(gè)偵測語句通過與運(yùn)算符連接起來,并且不要忘了將如果那么語句放在重復(fù)執(zhí)行的里面,這樣代碼才會一直的判斷。
這時(shí),點(diǎn)擊小貓它也說話了:


等待語句法
第三種方法也是用語句代碼實(shí)現(xiàn)。
在Scratch的控制模塊中,有一個(gè)等待語句。

它的作用是等待方框里的條件成立時(shí),再執(zhí)行下面的積木。
等待語句和如果那么語句一樣也是一種判斷語句,所以我們將上一個(gè)方法中如果那么語句中的條件放到等待語句里也可以實(shí)現(xiàn)角色點(diǎn)擊判斷的功能。

這里使用了兩個(gè)等待語句。當(dāng)綠旗被點(diǎn)擊后,代碼開始運(yùn)行,首先會等待第一個(gè)語句的條件成立,當(dāng)我們使用鼠標(biāo)點(diǎn)擊角色時(shí),第一個(gè)等待語句的條件滿足,接著會等待第二個(gè)語句的條件成立,第二個(gè)等待語句的條件與第一個(gè)等待語句的條件剛好是相反的,在條件上添加了一個(gè)不成立的邏輯符。
使用通俗的話講,第一個(gè)等待語句是等待鼠標(biāo)的按鍵按下,第二等待語句是等待鼠標(biāo)的按鍵抬起,這兩個(gè)等待語句組合就完成了整個(gè)鼠標(biāo)按鍵點(diǎn)擊動作的判斷。
當(dāng)?shù)诙€(gè)等待語句的條件成立后,就會執(zhí)行后面的代碼,小貓說你好!


不同點(diǎn)
方法二與方法三都是通過編碼實(shí)現(xiàn)角色點(diǎn)擊的判斷,基本的原理也是一樣的,但是它們還是有一些不同的地方,你知道是什么嗎?
同學(xué)們先自己想一想。
首先,方法二的如果那么語句只有一個(gè)條件,當(dāng)我們按下鼠標(biāo)的一瞬間條件就成立了。而方法三有兩個(gè)條件,當(dāng)鼠標(biāo)按下和松開兩個(gè)條件都成立后才會執(zhí)行后面的代碼,所以它們的第一個(gè)不同點(diǎn)就是觸發(fā)的時(shí)間點(diǎn)不同,方法二在我們按下鼠標(biāo)的時(shí)候小貓就會說話,而方法三必須按下鼠標(biāo)并松開完成整個(gè)點(diǎn)擊動作后小貓才會說話。
第二個(gè)不同也很明顯,方法二與方法三相比多了一個(gè)重復(fù)執(zhí)行的語句,所以方法二會不停的判斷是否點(diǎn)擊角色了,我們可以一直點(diǎn)擊小貓讓它說話,而方法三只會判斷一次,小貓說一次話之后代碼就結(jié)束了。
這并不是說方法三沒有方法二的好,而是它們的作用不同。方法二用于可以多次或無限點(diǎn)擊的角色,比如一個(gè)加血按鈕,點(diǎn)擊它可以給角色加血。方法三呢主要用于點(diǎn)擊一下頁面就跳轉(zhuǎn)的情況,比如游戲的開始按鈕,我們點(diǎn)擊它后,游戲就轉(zhuǎn)到下一個(gè)場景了,就如《記憶碎片》中的三角形開始按鈕一樣,這當(dāng)然就不需要重復(fù)執(zhí)行判斷了。

總結(jié)
這篇文章中我們一起學(xué)習(xí)了實(shí)現(xiàn)角色點(diǎn)擊的三種方法,其中有兩種方法需要我們自己寫代碼實(shí)現(xiàn),同時(shí)也知道了這兩種方法的不同點(diǎn),相信同學(xué)們了解原理之后,在今后的開發(fā)中會更從容的使用它們。那實(shí)現(xiàn)角色點(diǎn)擊的方法就只有這三種嗎,還有沒有其它更棒的方法呢?同學(xué)們開動腦筋,歡迎給果凍老師留言,將你想出來的方法告訴我哦!
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時(shí)和我們聯(lián)系刪除
