在西游記中,有一集是“真假悟空”,六耳獼猴變成了悟空的模樣與真悟空真假難辨,打的不可開交。
在Scartch中,我們常常會使用一個本體來生成多個克隆體,這在開發過程中有重要的意義。但在實際操作中,每個克隆體看起來都是一樣的,如何在程序中區分克隆體呢?
我們這里需要區分兩個問題:
第一個是如何區分本體和克隆體.第二個是如何標識及區分多個不同的克隆體。
今天,我們就把克隆體的相關知識及區分的問題分析一下。
克隆體與本體的關系是什么呢?
在本體生成克隆體時,克隆體會具有和本體相同的位置、方向、大小、特效、造型、聲音、局部變量和程序。由於它們具有相同的程序,所以在響應消息時,本體和克隆體可能會同時接受消息,產生錯誤的結果。因此必須區分本體及克隆體。
下面,我們從克隆體的生命周期上分析區分的方法,克隆體的生命周期包括如下幾個過程。
1
克隆體的創建:是使用“克隆”積木生成的,可以生成一個角色的克隆體,或生成另外角色的克隆體。
2
在克隆體生成時,就會激發“當作為克隆體啟動時”的事件,可以在此進行一些克隆體的初始化工作。
3
刪除克隆體,克隆體最后可以刪除自己。只有刪除后,克隆體的所有資源才釋放。
而本體的生命周期呢?
本體是一直存在的,只要在項目中加入了這個本體角色,這個角色就存在,直到將這個角色從項目中刪除才會釋放所有的資源。
很重要的一個區別就是,只有本體可以接收綠旗事件。由於在點擊綠旗時,系統會先刪除所有的克隆體,這時舞台上只有本體,也就只有本體可接受綠旗事件。
從上面的分析可以知道,本體和克隆體發生的事件是不同的。
只有本體可以接收綠旗事件,只有克隆體可以接收“當作為克隆體啟動時”事件。
這樣就可以區分這兩者了。
典型的方式如下,可以設置一個局部變量“是克隆體”,在綠旗時設置為0,表示不是克隆體,在“當作為克隆體啟動時”時,再把這個變量設置為1,表示是克隆體。
程序如下:
這樣這個變量的值就表示了是否是克隆體。
下面是區分克隆體的問題,在生成多個克隆體時,如何區分不同的克隆體呢?
可以使用這樣的方式,建立一個局部變量ID,使每個克隆體的數值不同,就可以用來區分多個克隆體了。那么如何設置這個值呢?可以在本體中改變值后再克隆,因為克隆體繼承了本體變量的值,所以每個可以有不同的值。
程序如下:
可以看到,在生成10個克隆體的過程中,每個克隆體都有了不同的ID。在點擊綠旗及按下空格后,就得到了下面的效果。
可以看到每個克隆體得到了從1到10的不同ID,而說11的就是本體。
結論
1 克隆體是Scratch中重要的功能,在程序中區分克隆體是很重要的技術。
2 區分包括兩個方面,一個是區分本體和克隆體,另一個是區分不同的克隆體。
3 區分本體和克隆體的方式是利於兩者的不同事件。
4 區分不同克隆體的方式是使用一個標識的變量。