問題
我正在做一個鍛煉記憶力的游戲,用戶在點擊了一個精靈后,必須在兩秒以內(nèi)點擊另一個與它匹配的精靈。我用全局變量來記錄匹配的變量,但我不確定如何來做時間記錄這部分工作。我已經(jīng)嘗試過使用”the shorttime”,但我找不到一個好的方法將所得的時間相減。
回答
用時鐘來功能作為運算時間的基礎,在dirctor里是非常復雜的部分-----盡管我不是很清楚為什么必須這樣。(the time始終是作為字符串輸出的,而字符串對我并沒有太大的意義。)無論如何,我們并不需要擔心,因為我們不使用the short time。我們確實不需要知道具體的時間是多少。我們更愿意了解一個事件和另一個事件的間隔的時間。這就是說,我們更需要一個秒表,而不是一個鐘。幸運的是用timer的命令很容易做到這一點。
Timer是一種自由的計時工具。它以”ticks”------也就是60分之1秒計時。你唯一需要掌握的命令就是”starttimer”,這會使timer復位到0。只要開始計時,你可以在任何時候檢查數(shù)值以便得知過去的時間。
讓我們來寫一個行為,以接受這個小小的挑戰(zhàn)。首先,我們來對這個行為來定一下位。當你將這個行為附加到精靈上的時候,你會希望能夠輸入一個名稱,這樣對應的精靈也用同一個名稱。你也會希望能夠定義兩次點擊的延遲時間(用ticks----60ticks等于一秒)。這將是你可以將這行為重復使用到任意一組精靈上。第二步,在運行的時候,當精靈被點擊,以下是需要做的事情。
1. 判斷第一次和第二次點擊的是不是一組。
2. 如果是第一次點擊,那么便需要在全局變量中儲存這一組的名字并且開始計時。
3. 如果是第二次點擊,那么便需要核實是否與上次點擊儲存在全局變量中的名稱一致。
4. 如果名稱相符,那么便需要檢測是否超時。
5. 在第二次點擊后并且檢測后,需要將全局變量復位到0。
以下是這個行為。
----timermatch behavior
----copyright © 1998,zzp online,llc(它已經(jīng)5歲了)
PRoperty pgroup
propert ptimelapse
global gclickgrop
on getpropertydescriptionlist
set d=[:]
addprop d,#pgrop,[#default:#first,#format:#symbol,#comment:”匹配的組”]
addprop d,#ptimelapse,[#default:120t,#format:#integerl,#comment:”間隔時間”]
return d
end
on mousedown me
if gclickgrop=#null then
set gclickgroup=pgroup
starttimer
else
if gclickgroup=pgrop then
if the timer<120 then
alert “這是一組”
else
alert “太慢”
end if
else
alert “不是一組”
end if
set gclickgroup=#null
end if
end
新聞熱點
疑難解答